WO2011141759A1 - System and method for auto-scaling information distribution using distributed processing elements - Google Patents

System and method for auto-scaling information distribution using distributed processing elements Download PDF

Info

Publication number
WO2011141759A1
WO2011141759A1 PCT/IB2010/001068 IB2010001068W WO2011141759A1 WO 2011141759 A1 WO2011141759 A1 WO 2011141759A1 IB 2010001068 W IB2010001068 W IB 2010001068W WO 2011141759 A1 WO2011141759 A1 WO 2011141759A1
Authority
WO
WIPO (PCT)
Prior art keywords
information
processing element
processing
client device
network
Prior art date
Application number
PCT/IB2010/001068
Other languages
French (fr)
Inventor
Bob Melander
Jan-Erik Mangs
Original Assignee
Telefonaktiebolaget L M Ericsson (Publ)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Telefonaktiebolaget L M Ericsson (Publ) filed Critical Telefonaktiebolaget L M Ericsson (Publ)
Priority to PCT/IB2010/001068 priority Critical patent/WO2011141759A1/en
Publication of WO2011141759A1 publication Critical patent/WO2011141759A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

Definitions

  • the present invention generally relates to systems, software and methods and, more particularly, to mechanisms and techniques for using more efficiently available resources or leased resources for distributing information while a pool of users is continuously changing.
  • Cloud computing describes a new supplement, consumption and delivery model for IT services based on the Internet, and it typically involves the provision of dynamically scalable and often virtualized resources as a service over the Internet. It is a byproduct and consequence of the ease-of-access to remote computing sites provided by the Internet.
  • a traditional cloud computing system 10 is illustrated in Figure 1. Users 12 (organizations, enterprises, individuals, etc.) connect via an entry point 14 to the cloud 16.
  • the cloud 16 is an abstraction of the underlying infrastructure it represents.
  • Typical cloud computing providers deliver common business applications online which are accessed from another web service or software like a web browser, while the software and data are stored on servers [0003]
  • Most cloud computing infrastructure consists of reliable services delivered through data centers and built on servers. Clouds often appear as single points of access for all consumers' computing needs.
  • Commercial offerings are generally expected to meet quality of service (QoS) requirements.
  • QoS quality of service
  • cloud computing customers do not own the physical infrastructure, thus avoiding capital expenditure by renting usage from a third-party provider. They consume resources as a service and pay only for resources that they use.
  • Common to all operational cloud platforms are their implementation using data centers (often of massive size) hosting clusters of PC servers, which are often logically sliced using virtualization engines like XEN, or Microsoft's HyperV or VMware's ESX server.
  • Major cloud platforms are typically distributed across multiple data centers so as to achieve robustness and global presence. However, this presence is quite coarse-grained and data center-based clouds consider the entire operator networks simply as first mile connectivity. Their closeness to the end-users is thus limited.
  • Scalability is a desired characteristic for the data center owner as many times the service provider collects the same fee whether using N pieces of equipment (e.g., processing elements) or N+M pieces of equipment. As the infrastructure and the cost of the equipment is not negligible, the service provider has the interest to provide the same service with the same quality with the minimum possible pieces of equipment.
  • the core functionality of this system may be the end-user client that renders video content using appropriate codecs as well as interacting with the provider side components of the overall system, the access and conditional control functions, the searchable database of video titles and associated user interface, the billing system, the storage system for video files, possible transcoding proxies that adapt video streams to the capabilities of the user client, etc.
  • the software components realizing the above noted core functionality are desired to be robustly implemented (e.g., the code should deal with error conditions in a graceful manner, perhaps use thread pools if request rates are assumed to be high, etc).
  • the components need to be combined and orchestrated appropriately. This may involve having redundant hot standby components that can step in if a certain component fails, or dormant components that can be activated to scale up the system if the load suddenly increases.
  • This system spanning part of the scalability and robustness problem is quite generic as it applies to a wide range of systems. It is a technical field in itself that requires extensive experience to master. This means that experts for the core functionality (e.g., developers holding expertise in video coding, video transport and video rendering in the video-on-demand example above) may lack such competence. This makes the undertaking of creating the system much more demanding and man-resource intensive.
  • a smart platform support should allow the developers to focus on the core functionality of the system (e.g., the items listed above for the video-on-demand example) by providing functionality to handle much of the dynamics related to the system spanning robustness and scalability. The developer can then instruct the platform about which components should be, for instance, scalable (and criteria for when that should occur) and the platform should be able to implement the desired goals of the user.
  • Assets as, for example, content are desired to be provided to the users from locations that are most suitable to the users.
  • a suitable location may be a location that is closest to the user. In this way, receiving the content from a location closest to the user frees bandwidth in the network and/or reduces a time for receiving the asset. Also, the same asset may be desired by more or less users at a certain location. Thus, it is desirable to have a system or network that auto-scale information distribution.
  • a method for auto- scaling information distribution in a network having distributed processing elements includes a step of receiving at a processing platform a first request for information from a first client device; a step of determining a source of information that stores the information; a step of dynamically selecting from the distributed processing elements at least one processing element to establish a communication path between the first client device and the source of information such that the at least one processing element satisfy a first requirement list; a step of creating, if the processing platform does not select the at least one processing element to satisfy the first requirement list, the at least one processing element; and a step of transferring the information to the first client device.
  • the network includes distributed processing elements; and a processing platform provided on one or more of the distributed processing elements.
  • the processing platform is configured to receive a first request for information from a first client device, determine a source of information that stores the information, dynamically select from the distributed processing elements at least one processing element to establish a communication path between the first client device and the source of information such that the at least one processing element satisfy a first requirement list, if the processing platform does not select the at least one processing element to satisfy the first requirement list, create the at least one processing element, and transfer the information to the first client device.
  • Figure 1 is a schematic diagram of a cloud computing network
  • Figure 2 is a schematic diagram of a communication path and associated elements according to an exemplary embodiment
  • Figure 3 is a schematic diagram of a network including plural processing elements and sources of information according to an exemplary embodiment
  • Figure 4 is a schematic diagram of plural client devices connecting to a network according to an exemplary embodiment
  • Figure 5 is a schematic diagram illustrating the addition of client devices by a processing platform to a network according to an exemplary embodiment
  • Figure 6 is a schematic diagram illustrating the removal of
  • Figure 7 is a flow chart of a method for providing information to a client device according to an exemplary embodiment
  • Figure 8 is schematic diagram of a communication path and shows associated steps of Figure 7 according to an exemplary embodiment
  • Figure 9 is a schematic diagram of a processing element according to an exemplary embodiment
  • Figure 10 is a flow chart of a method for auto-scaling information distribution of a system according to an exemplary embodiment.
  • Figure 11 is a schematic diagram of a processing element.
  • embodiments to be discussed next are not limited to these systems and services but may be applied to other systems. Also, the exemplary embodiments may be applied to providing information from the client device to the source of information or from a processing element to the source of information, i.e., from children to parent.
  • an auto-scaling information distribution system is configured to provide a core functionality to end users.
  • the system may provide in-network mechanisms to build Internet-scale media distribution systems, like Spotify, Voddler, or (the original) Joost.
  • it is provided a scalable communication channel from a source of information (located in the cloud) to an arbitrary number of consumers that may connect to the cloud. This channel may optionally involve zero or more processing elements to modify or otherwise process the transported information (e.g., cache it, etc.).
  • the system is configured to create additional branches which may originate at the source of information or at some intermediate node in the distribution topology (e.g., a tree) that connect the existing channel to the new consumers.
  • branches that are no longer used are removed.
  • Figure 2 shows various processing components (source of information, processing elements, client devices, etc.) distributed along a generic communication path that is part of the topology of an auto-scaling distribution system 20.
  • the source of information, processing elements, and client devices may be implemented as software components running in processing elements. More specifically, Figure 2 shows a source of information 22.
  • the source of information may include the desired information to be obtained or processed by an end user.
  • the source of information may be, for example, implemented as a server in a data center.
  • the source of information 22 may be accessed by client devices, e.g., mobile device, computer, server, personal digital assistant, netbook, software component implemented in one of these devices, etc.
  • a communication path 26 between the source of information 22 and the client device 24 may include one or more processing elements 28 that perform at least some type of processing (e.g., transcode, cache, etc.).
  • the processing elements 28 may be implemented as software components in dynamically scalable intermediate nodes as will be discussed later.
  • One or more of the source of information 22, client device 24, and processing elements 28 may be implemented as software components on hardware.
  • software components may be implemented at the physical devices 22, 24 and 28 for allowing them to communicate in a manner that allows the system to achieve the auto-scaling feature.
  • a processing platform that coordinates the communications between the source of information 22, the client device 24 and the processing elements 28 may be implemented in software and is called the runtime fabric (RF) 30.
  • the processing platform 30 may run on the elements already shown in Figure 2 and/or on processing element nodes, communication nodes, and nodes using for other tasks, e.g., management purposes.
  • Creating or establishing communication paths and branches may involve configuring intermediate network boxes (components) in different ways, e.g., setting up a multiprotocol label switching (MPLS) path with specific requirements between two nodes.
  • the processing platform 30 is configured to allow a client device 24 to attach to the system using primitives provided by the processing platform. Also, the processing platform 30 allows the client device 24 to requests information from the system and/or the source of information. In one exemplary embodiment, the processing platform 30 coordinates the creation and removal of communication paths and branches.
  • Figure 3 illustrates two sources of information 22a and 22b that may be geographically separated by a significant distance.
  • the source of information 22a may be located on a first continent while the source of information 22b may be located on another continent.
  • Plural processing elements 28 are located around the two sources of information as also shown in Figure 3.
  • No communication paths or branches are established in the system 20.
  • the term communication path is used for identifying a communication channel between a source of information 22 and a client device 24 or a processing element 28 while the term communication branch is used for identifying a communication channel between a processing element 28 and a client device 24.
  • the term communication branch is used for identifying a communication channel between a processing element 28 and a client device 24.
  • the processing platform 30 may be configured to implement various requirements. These requirements may be divided, for example, into n requirement lists, each list being specific for a certain client device. However, a set of client devices may use the same requirement list.
  • a requirement list may include at least one of a location of a processing element 28a relative to a first client device 24, network requirements, and processing capabilities of the processing element 28a.
  • Some specific examples of the requirements may be (1) there is one source of information 22 on each continent, (2) the source of information is static, e.g., located in a data center, (3) a delay between the source of information 22 and the
  • processing element 28a should be minimized when deciding which processing element to include in the communication path, (4) a minimum amount of storage for a processing element 28, (5) a minimum amount of bandwidth between the source of information 22 and the processing elements 28, (6) a minimum amount of bandwidth between two processing elements 28, (7) a maximum number of processing elements 28 that are allowed to be part of a same communication path, etc.
  • the processing platform 30 may be configured to handle the protocols for connecting new clients to the system.
  • the client device 24a may send a request for information to the system 20, e.g., processing platform 30.
  • the processing platform 30 determines whether the source of information 22a or the processing elements 28 have the requested information. If the source of information 22a has the requested information (it is assumed that none of the processing elements 28 have the requested information), then the processing platform 30 establishes a communication path 32 and 34 between the source of information 22a and the requesting client device 24a. While this specific example is explained based on the assumption that the processing platform 30 communicates with the source of information 22, the processing elements 28 and the client device 24 for determining where the information is stored and when the information is available, it is possible that part or all of the
  • the establishment of the communication path 32 and 34 by the processing platform 30 involves a determination of an appropriate processing element 28a to be included in the communication path.
  • the appropriate processing element is selected to meet the requirements on the requirement list or lists discussed above. In one application, such a requirement may include that the processing element is the closest to the client device, from a geographical point of view.
  • the processing platform 30 may provide one or more of the following steps: instruct the source of information 22a to provide the requested information to the corresponding processing element 28a; instruct the client device 24a that processing element 28a has the requested information; and instruct the processing element 28a to provide the requested information to the client device 24a.
  • these instructions may be provided by other elements of the system 20. The same may be true for client 24b.
  • the processing platform 30 is configured to activate two new processing elements 28b and 28c to serve the new client devices.
  • communication path 32 have been extended to reach the new processing element 28b and new communication branches 36 and 38 have been added between the processing element 28b and client devices 24c and 24d.
  • new processing element 28c, communication path 40, and communication branch 42 has the ability to
  • the processing platform 30 also insures that the new components and communication channels comply with the list of requirements stored in the system. While this exemplary embodiment is discussed under the assumption that information is provided from the source of information to the client device, it might be the case that information is provided in the opposite direction.
  • the client devices or W some processing elements may collect and aggregate sensor data, collect usage statistics from video clients, and transfer this information to the source of information or other processing elements.
  • merging/aggregation may be performed at the client devices and/or processing elements and transmitted up the communication path.
  • an opposite process may be implemented in system 20 and/or processing platform 30. More specifically, the processing platform 30 may be configured not only to
  • the processing platform 30 may determine, based on known processing, that communication branch 34 is not in use. Thus, the processing platform 30 may decide to remove the communication branch 34. The same is true for clients 24b and 24e in Figure 6.
  • the communication paths may be configured to transport the same information to various client devices connected to the communication paths.
  • communication path 32 may be configured to provide a same movie to both client devices 24c and 24d.
  • the communication path 32 is configured to transmit different information between the two client devices 24c and 24d.
  • the above discuses examples may take place between the source of information 22b and its corresponding processing elements and client devices.
  • FIG. 7 illustrates a possible communication exchange among the various elements of the system 20 while Figure 8 maps some of the communication exchanges to a physical representation of the system.
  • a client device 24 may request in step (1) to receive certain information.
  • the processing platform 30 receives the request from the client device 24 and determines in step (2) whether an appropriate processing element 28 is active in the system. If such element is not active a new processing element 28 is created/activated. This last action is illustrated in steps (3) to (5).
  • the processing platform 30 sends a request to create the processing element to a counterpart processing platform part 30a that resides in a processing node 50.
  • the processing node is a physical node (e.g., server, radio base station, router, laptop, etc.) while the processing element is a physical node or a virtual slice of a physical node (e.g., virtual machine running in a hypervisor on the physical node).
  • the processing node 50 may also include the processing element 52 to be created.
  • the processing platform part 30a creates the processing element 52 and in step (5) information to that effect is sent to the processing platform 30. Further clarification about the processing platform 30 is provided now.
  • the processing platform 30 includes software components. These components are distributed to the processing elements 28, processing nodes 50, source of information 22, etc. or centralized in a single location.
  • the processing platform 30 determines the most suitable source of information 22 and the most suitable processing element or elements 28 based, for example, on system requirements, topology, processing node capabilities, etc.
  • processing node capabilities or the processing elements capabilities it is noted that these elements may be configured to perform not only simply operations as those performed, for example, by a router, but more advanced operations, as for example, caching, transcoding, compressing, archiving, collecting statistics or performing other computations.
  • Such other computations may include, for example, data mining and (sensor) data merging/aggregation.
  • the processing platform 30 sends in step (8) a handle and the client device's request to the selected processing element 50.
  • a handle is a symbolic name that can be translated to an addressable instance or reference, e.g., an IP address and port number. This abstraction and translation may be part of the processing platform 30.
  • the selected processing element 50 sends in step (9) the request from the client device to the processing platform component 23a at the source of information 22 (or another processing element if more than one processing element 50 is in the communication path).
  • the source of information may
  • Figure 7 shows that the source of information 22 includes the processing platform component 23a and the physical part 23b.
  • step (1 ) the source of information 22 starts to deliver the requested info to the processing element 50.
  • step ( 2) the processing element 50 informs the processing platform component 30a that the requested information is ready to be provided to the client device.
  • steps (13) and (14) the processing platform component 30a communicates with the processing platform 30 and the client device 24 that the requested information is ready to be provided and also provides the client device 24 with the handle for the processing element 28 that will provide the requested information.
  • step ( 7) After some protocol steps ( 5) and (16) for establishing the connection between the client device 24 and the processing element 50, the requested information is delivered in step ( 7) from the processing element 50 to the client device 24.
  • Figure 7 also shows a processing platform component 25 that is installed at the client device 24 and is involved in some of the above discussed steps.
  • a processing element 28 may include a processor and/or dedicated circuitry for achieving the following functionalities.
  • arrows are used to indicate the flow of information, as already mentioned above, the direction of the arrows may be reversed and information may be sent from the client devices to the processing elements and/or the source of information.
  • Figure 9 is discussed assuming that the information flows from the source of information to the client devices.
  • An input interface 60 facilitates communication between the processing element 28 and other processing elements, the source of information, and/or the processing platform 30.
  • the incoming information is directed to a request/data management unit 62 that either directs the information to a cache unit 64 or sends it to a distribution unit 66.
  • the management unit 62 may be configured to perform management functions as known in the art.
  • This unit may include a source controller unit 68 configured to communicate via an interface 70 with various elements of the system 20.
  • the interface 70 may communicate with parents 72 or children 74 in the communication path to which the processing element 28 belongs.
  • the parents and children are the predecessors and successors, respectively in the communication path or branch.
  • the source controller 68 also interacts with a switching unit 76 that is configured to provide to the distribution unit 66 either information received directly from input 60 or information already stored in cache unit 64.
  • the information from the switching unit 76 is provided to the distribution unit 66 where various paths are possible.
  • One possibility is that the information goes directly to a corresponding branch or children to which the processing element 28 is connected. This path is labeled in the figure as a' and ⁇ , ' .
  • Another possibility is to apply some common processing in unit 78 and then to provide the information directly to the branches. This path is labeled as a and ⁇ , ' .
  • the common processing may be, for example, inserting advertisement that is common to a certain geographical area and the location of the processing element 28 may be used to define the geographical area.
  • Still another path may include applying the common processing followed by applying branch specific processing.
  • This path is labeled as a and ⁇ ,.
  • Branch specific processing is performed in unit 80 and an example of branch specific processing includes applying transcoding to adapt a video stream bit rate to the capabilities of a sub branch.
  • the sub branch may be, for example, the
  • branch specific processing is the insertion of street specific advertisement given that the common processing is city specific. Other processing operations are possible and other combinations of processing may be achieved.
  • the method includes a step 1000 of receiving at a processing platform a first request for information from a first client device; a step 002 of determining a source of information that stores the information; a step 004 of dynamically selecting from the distributed processing elements at least one processing element to establish a communication path between the first client device and the source of information such that the at least one processing element satisfy a first requirement list; a step 1006 of creating, if the processing platform does not select the at least one processing element to satisfy the first requirement list, the at least one processing element; and a step 1008 of transferring the information to the first client device.
  • the first requirement list includes at least one of a location of the at least one processing element relative to the first client device, network
  • the step of transferring the information to the first client device may be achieved by applying a push mechanism or a pull mechanism.
  • the mechanism includes, sending the information from the source of information to the at least one processing element and sending the same information from the at least one processing element to the first client device.
  • the pull mechanism includes, the first client device requesting the information from the at least one processing element and the at least one processing element requesting the information from the source of information.
  • the source of information keeps track of all children or the first client device keeps track of all elements above it along the communication path.
  • One or more of the embodiments discussed above provides a system with highly scalable in-network mechanisms to build Internet-wide information distribution systems, in particular media services like Spotify, Voddler, or (the original) Joost.
  • such embodiments simplify the development process for the system developer by taking care of many complexities related to scaling of resources.
  • the developer can concentrate on the functionality and design of the software components, while the novel features discussed above assists to scale and distribute them.
  • the traffic volume in the network is reduced since several consumers can share branches in the distribution topology.
  • the novel system permits the network operator to deploy processing nodes (e.g., servers) in its network and make those nodes available to third party without having to reveal details about how the network is designed and structured. The users can still request servers based on location requirements, etc., without having to know all the internal details
  • FIG. 11 For purposes of illustration and not of limitation, an example of a representative processing element capable of carrying out operations in accordance with the exemplary embodiments is illustrated in Figure 11. It should be recognized, however, that the principles of the present exemplary embodiments are equally applicable to standard computing systems. Hardware, firmware, software or a combination thereof may be used to perform the various steps and operations described herein.
  • the processing element 1100 of Figure 11 is an exemplary computing structure that may be used in connection with such a system.
  • the exemplary processing element 1100 suitable for performing the activities described in the exemplary embodiments may include server 1101.
  • a server 1 01 may include a central processor (CPU) 1102 coupled to a random access memory (RAM) 1104 and to a read-only memory (ROM) 1106.
  • the ROM 1106 may also be other types of storage media to store programs, such as programmable ROM (PROM), erasable PROM (EPROM), etc.
  • the processor 1102 may communicate with other internal and external components through input/output (I/O) circuitry 1108 and bussing 1110, to provide control signals and the like.
  • the processor 1102 carries out a variety of functions as is known in the art, as dictated by software and/or firmware instructions.
  • the server 1101 may also include one or more data storage devices, including hard and floppy disk drives 1112, CD-ROM drives 1114, and other hardware capable of reading and/or storing information such as DVD, etc.
  • software for carrying out the above discussed steps may be stored and distributed on a CD-ROM 1116, diskette 1118 or other form of media capable of portably storing information. These storage media may be inserted into, and read by, devices such as the CD-ROM drive 1114, the disk drive 1112, etc.
  • the server 1101 may be coupled to a display 1120, which may be any type of known display or presentation screen, such as LCD displays, plasma display, cathode ray tubes (CRT), etc.
  • a user input interface 1122 is provided, including one or more user interface mechanisms such as a mouse, keyboard, microphone, touch pad, touch screen, voice-recognition system, etc.
  • the server 1101 may be coupled to other computing devices, such as the landline and/or wireless terminals and associated watcher applications, via a network.
  • the server may be part of a larger network configuration as in a global area network (GAN) such as the Internet 1128, which allows ultimate connection to the various landline and/or mobile client/watcher devices.
  • GAN global area network
  • the disclosed exemplary embodiments provide a network and a method for auto-scaling information distribution. It should be understood that this description is not intended to limit the invention. On the contrary, the exemplary embodiments are intended to cover alternatives, modifications and equivalents, which are included in the spirit and scope of the invention as defined by the appended claims. Further, in the detailed description of the exemplary embodiments
  • the exemplary embodiments may be embodied in a wireless communication device, a
  • telecommunication network as a method or in a computer program product.
  • the exemplary embodiments may take the form of an entirely hardware embodiment or an embodiment combining hardware and software aspects. Further, the exemplary embodiments may take the form of a computer program product stored on a computer-readable storage medium having computer-readable instructions embodied in the medium. Any suitable computer readable medium may be utilized including hard disks, CD-ROMs, digital versatile disc (DVD), optical storage devices, or magnetic storage devices such a floppy disk or magnetic tape. Other non-limiting examples of computer readable media include flash-type memories or other known memories.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

A system and method for auto-scaling information distribution in a network (20) having distributed processing elements (28). The method includes receiving at a processing platform (30) a first request for information from a first client device (24a); determining a source of information (22a) that stores the information; dynamically selecting from the distributed processing elements (28) at least one processing element (28a) to establish a communication path (32, 34) between the first client device (24a) and the source of information (22a) such that the at least one processing element (28a) satisfy a first requirement list, wherein the first requirement list includes at least one of a location of the at least one processing element relative to the first client device, network requirements, and processing capabilities of the at least one processing element; if the processing platform (30) does not select the at least one processing element (28a) to satisfy the first requirement list, creating the at least one processing element; and transferring the information to the first client device (24a).

Description

System and Method for Auto-Scaling Information Distribution Using
Distributed Processing Elements
TECHNICAL FIELD
[0001] The present invention generally relates to systems, software and methods and, more particularly, to mechanisms and techniques for using more efficiently available resources or leased resources for distributing information while a pool of users is continuously changing.
BACKGROUND
[0002] During the past years, an interest among organizations and enterprises for an on demand model where hardware and software are leased as metered services has increased. Details are abstracted from the users who no longer have need of, expertise in, or control over the technology infrastructure "in the cloud" that supports them. Cloud computing describes a new supplement, consumption and delivery model for IT services based on the Internet, and it typically involves the provision of dynamically scalable and often virtualized resources as a service over the Internet. It is a byproduct and consequence of the ease-of-access to remote computing sites provided by the Internet. A traditional cloud computing system 10 is illustrated in Figure 1. Users 12 (organizations, enterprises, individuals, etc.) connect via an entry point 14 to the cloud 16. The cloud 16 is an abstraction of the underlying infrastructure it represents. Typical cloud computing providers deliver common business applications online which are accessed from another web service or software like a web browser, while the software and data are stored on servers [0003] Most cloud computing infrastructure consists of reliable services delivered through data centers and built on servers. Clouds often appear as single points of access for all consumers' computing needs. Commercial offerings are generally expected to meet quality of service (QoS) requirements.
[0004] In general, cloud computing customers do not own the physical infrastructure, thus avoiding capital expenditure by renting usage from a third-party provider. They consume resources as a service and pay only for resources that they use. Common to all operational cloud platforms are their implementation using data centers (often of massive size) hosting clusters of PC servers, which are often logically sliced using virtualization engines like XEN, or Microsoft's HyperV or VMware's ESX server. Major cloud platforms are typically distributed across multiple data centers so as to achieve robustness and global presence. However, this presence is quite coarse-grained and data center-based clouds consider the entire operator networks simply as first mile connectivity. Their closeness to the end-users is thus limited.
[0005] There are situations when the users may benefit from having processing elements closer to them than the data centers-based clouds can provide. Situating servers closer to end-users imply more distributed and geographically scattered server constellations. It is desirable that systems deployed on such a distributed platform (for example video-on-demand systems, or enterprise
information system accelerators) be robust and scalable so that, for instance, a failing equipment or transiently increased loads do not jeopardize the systems' operation, stability and availability. Scalability is a desired characteristic for the data center owner as many times the service provider collects the same fee whether using N pieces of equipment (e.g., processing elements) or N+M pieces of equipment. As the infrastructure and the cost of the equipment is not negligible, the service provider has the interest to provide the same service with the same quality with the minimum possible pieces of equipment.
[0006] Designing and implementing a system to be robust and scalable is a challenging task. While these properties are highly desirable or even necessary, in particular for commercial systems that have paying customers, they are not the core functionality or building blocks of the system. Rather they are properties that the operational system should possess. The path to achieve those properties is reflected in how the components of the core functionality are designed and implemented internally but also how those components are combined and orchestrated in the overall system solution.
[0007] To provide a more concrete example, consider a video-on-demand system. The core functionality of this system may be the end-user client that renders video content using appropriate codecs as well as interacting with the provider side components of the overall system, the access and conditional control functions, the searchable database of video titles and associated user interface, the billing system, the storage system for video files, possible transcoding proxies that adapt video streams to the capabilities of the user client, etc.
[0008] The software components realizing the above noted core functionality are desired to be robustly implemented (e.g., the code should deal with error conditions in a graceful manner, perhaps use thread pools if request rates are assumed to be high, etc). To make the overall system robust and scalable, the components need to be combined and orchestrated appropriately. This may involve having redundant hot standby components that can step in if a certain component fails, or dormant components that can be activated to scale up the system if the load suddenly increases. This system spanning part of the scalability and robustness problem is quite generic as it applies to a wide range of systems. It is a technical field in itself that requires extensive experience to master. This means that experts for the core functionality (e.g., developers holding expertise in video coding, video transport and video rendering in the video-on-demand example above) may lack such competence. This makes the undertaking of creating the system much more demanding and man-resource intensive.
[0009] Consider the above discussion now in the context of a platform for network-based processing that includes a large number (e.g., in the order of hundreds or the low thousands) of highly distributed and geographically scattered processing elements in an operator's network. Users of the network-based processing platform, e.g., system and software developers, when intending to efficiently use the network, will have to know which processing elements (servers) are available, where are these processing elements located, how to achieve robustness if an element fails, which processing elements should be used to host hot standby components, how to scale the system if an element is unable to handle a temporarily increased load, on which processing elements should the dormant components be activated, how can unicast traffic flows dynamically be reduced through application level multicast flows by inserting intermediate components on suitable processing elements, should the processing elements holding redundant components be leased and paid for the entire time, etc.
[0010] When the processing platform includes processing elements scattered across a (large) geographic region, the notion of location may become relevant. This implies that the above questions concerning which elements to use may heavily depend on the location of the processing elements. [0011] The complexity of using such a system may easily become
overwhelming, especially if the platform is simply a constellation of independent servers, i.e., servers glued together by nothing more than plain IP connectivity. Another factor that should be considered is the fact that the network operator may be reluctant to provide detailed information about the design and topology of the network, e.g., keep it confidential. If this is the case, it can be difficult to provide information about where servers are located and how they are interconnected without revealing detailed and sensitive information about the network infrastructure. Hence, merely making a large number of processing elements (e.g., server computers) available in a (operator) network does not result in those elements being easy to use for system developers.
[0012] What is lacking in the art is platform support that assists the system and software developers in solving the problems discussed above. A smart platform support should allow the developers to focus on the core functionality of the system (e.g., the items listed above for the video-on-demand example) by providing functionality to handle much of the dynamics related to the system spanning robustness and scalability. The developer can then instruct the platform about which components should be, for instance, scalable (and criteria for when that should occur) and the platform should be able to implement the desired goals of the user.
[0013] Accordingly, it would be desirable to provide devices, systems and methods that avoid the afore-described problems and drawbacks. SUMMARY
[0014] Assets as, for example, content are desired to be provided to the users from locations that are most suitable to the users. A suitable location may be a location that is closest to the user. In this way, receiving the content from a location closest to the user frees bandwidth in the network and/or reduces a time for receiving the asset. Also, the same asset may be desired by more or less users at a certain location. Thus, it is desirable to have a system or network that auto-scale information distribution.
[0015] According to one exemplary embodiment, there is a method for auto- scaling information distribution in a network having distributed processing elements. The method includes a step of receiving at a processing platform a first request for information from a first client device; a step of determining a source of information that stores the information; a step of dynamically selecting from the distributed processing elements at least one processing element to establish a communication path between the first client device and the source of information such that the at least one processing element satisfy a first requirement list; a step of creating, if the processing platform does not select the at least one processing element to satisfy the first requirement list, the at least one processing element; and a step of transferring the information to the first client device.
[0016] According to another exemplary embodiment, there is a network configured to auto-scale information distribution. The network includes distributed processing elements; and a processing platform provided on one or more of the distributed processing elements. The processing platform is configured to receive a first request for information from a first client device, determine a source of information that stores the information, dynamically select from the distributed processing elements at least one processing element to establish a communication path between the first client device and the source of information such that the at least one processing element satisfy a first requirement list, if the processing platform does not select the at least one processing element to satisfy the first requirement list, create the at least one processing element, and transfer the information to the first client device.
[0017] According to still another exemplary embodiment, there is a computer readable media configured to store computer instructions for performing the method noted above.
[0018] It is an object to overcome some of the deficiencies discussed in the previous section and to provide a network that is capable to auto-scale for distributing information to various users while a pool of the users may change.
BRIEF DESCRIPTION OF THE DRAWINGS
[0019] The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate one or more embodiments and, together with the description, explain these embodiments. In the drawings:
[0020] Figure 1 is a schematic diagram of a cloud computing network;
[0021] Figure 2 is a schematic diagram of a communication path and associated elements according to an exemplary embodiment;
[0022] Figure 3 is a schematic diagram of a network including plural processing elements and sources of information according to an exemplary embodiment;
[0023] Figure 4 is a schematic diagram of plural client devices connecting to a network according to an exemplary embodiment;
[0024] Figure 5 is a schematic diagram illustrating the addition of client devices by a processing platform to a network according to an exemplary embodiment;
[0025] Figure 6 is a schematic diagram illustrating the removal of
communication branches by a processing platform according to an exemplary embodiment;
[0026] Figure 7 is a flow chart of a method for providing information to a client device according to an exemplary embodiment;
[0027] Figure 8 is schematic diagram of a communication path and shows associated steps of Figure 7 according to an exemplary embodiment;
[0028] Figure 9 is a schematic diagram of a processing element according to an exemplary embodiment; [0029] Figure 10 is a flow chart of a method for auto-scaling information distribution of a system according to an exemplary embodiment; and
[0030] Figure 11 is a schematic diagram of a processing element.
DETAILED DESCRIPTION
[0031] The following description of the exemplary embodiments refers to the accompanying drawings. The same reference numbers in different drawings identify the same or similar elements. The following detailed description does not limit the invention. Instead, the scope of the invention is defined by the appended claims. The following embodiments are discussed, for simplicity, with regard to the terminology and structure of a cloud computing system and a video-on-demand service. Still for simplicity, the discussion of the following exemplary embodiments is based on providing information from a source to a client. However, the
embodiments to be discussed next are not limited to these systems and services but may be applied to other systems. Also, the exemplary embodiments may be applied to providing information from the client device to the source of information or from a processing element to the source of information, i.e., from children to parent.
[0032] Reference throughout the specification to "one embodiment" or "an embodiment" means that a particular feature, structure, or characteristic described in connection with an embodiment is included in at least one embodiment of the present invention. Thus, the appearance of the phrases "in one embodiment" or "in an embodiment" in various places throughout the specification is not necessarily all referring to the same embodiment. Further, the particular features, structures or characteristics may be combined in any suitable manner in one or more
embodiments.
[0033] According to an exemplary embodiment, an auto-scaling information distribution system is configured to provide a core functionality to end users. In particular, the system may provide in-network mechanisms to build Internet-scale media distribution systems, like Spotify, Voddler, or (the original) Joost. [0034] According to another exemplary embodiment, it is provided a scalable communication channel from a source of information (located in the cloud) to an arbitrary number of consumers that may connect to the cloud. This channel may optionally involve zero or more processing elements to modify or otherwise process the transported information (e.g., cache it, etc.). As new consumers appear, the system is configured to create additional branches which may originate at the source of information or at some intermediate node in the distribution topology (e.g., a tree) that connect the existing channel to the new consumers. When the consumers exit the network, branches that are no longer used are removed.
[0035] For a better understanding of the novel features, an example is now discussed with regard to Figure 2. Figure 2 shows various processing components (source of information, processing elements, client devices, etc.) distributed along a generic communication path that is part of the topology of an auto-scaling distribution system 20. The source of information, processing elements, and client devices may be implemented as software components running in processing elements. More specifically, Figure 2 shows a source of information 22. The source of information may include the desired information to be obtained or processed by an end user. The source of information may be, for example, implemented as a server in a data center. The source of information 22 may be accessed by client devices, e.g., mobile device, computer, server, personal digital assistant, netbook, software component implemented in one of these devices, etc. A communication path 26 between the source of information 22 and the client device 24 may include one or more processing elements 28 that perform at least some type of processing (e.g., transcode, cache, etc.). The processing elements 28 may be implemented as software components in dynamically scalable intermediate nodes as will be discussed later.
[0036] One or more of the source of information 22, client device 24, and processing elements 28 may be implemented as software components on hardware. In other words, software components may be implemented at the physical devices 22, 24 and 28 for allowing them to communicate in a manner that allows the system to achieve the auto-scaling feature. A processing platform that coordinates the communications between the source of information 22, the client device 24 and the processing elements 28 may be implemented in software and is called the runtime fabric (RF) 30. As illustrated in Figure 2, the processing platform 30 may run on the elements already shown in Figure 2 and/or on processing element nodes, communication nodes, and nodes using for other tasks, e.g., management purposes.
[0037] Communication paths and branches of the system are created by the processing platform 30 on appropriate nodes based on specified requirements.
Creating or establishing communication paths and branches may involve configuring intermediate network boxes (components) in different ways, e.g., setting up a multiprotocol label switching (MPLS) path with specific requirements between two nodes. The processing platform 30 is configured to allow a client device 24 to attach to the system using primitives provided by the processing platform. Also, the processing platform 30 allows the client device 24 to requests information from the system and/or the source of information. In one exemplary embodiment, the processing platform 30 coordinates the creation and removal of communication paths and branches.
[0038] For a better understanding of the role of the processing platform 30, the following video-on-demand example is discussed next. It should be noted that this example is not intended to limit the novel features or to limit the applicability of the processing platform. The example is intended to illustrate some specific novel features.
[0039] Figure 3 illustrates two sources of information 22a and 22b that may be geographically separated by a significant distance. For example, the source of information 22a may be located on a first continent while the source of information 22b may be located on another continent. Plural processing elements 28 are located around the two sources of information as also shown in Figure 3. No communication paths or branches are established in the system 20. The term communication path is used for identifying a communication channel between a source of information 22 and a client device 24 or a processing element 28 while the term communication branch is used for identifying a communication channel between a processing element 28 and a client device 24. Thus, in terms of technical characteristics it may be no difference between the communication path and the communication branch.
[0040] The processing platform 30 may be configured to implement various requirements. These requirements may be divided, for example, into n requirement lists, each list being specific for a certain client device. However, a set of client devices may use the same requirement list. A requirement list may include at least one of a location of a processing element 28a relative to a first client device 24, network requirements, and processing capabilities of the processing element 28a. Some specific examples of the requirements may be (1) there is one source of information 22 on each continent, (2) the source of information is static, e.g., located in a data center, (3) a delay between the source of information 22 and the
processing element 28a should be minimized when deciding which processing element to include in the communication path, (4) a minimum amount of storage for a processing element 28, (5) a minimum amount of bandwidth between the source of information 22 and the processing elements 28, (6) a minimum amount of bandwidth between two processing elements 28, (7) a maximum number of processing elements 28 that are allowed to be part of a same communication path, etc.
[0041] Assume now that two client devices 24a and 24b have been connected to the system 20 as shown in Figure 4. As discussed above, the processing platform 30 may be configured to handle the protocols for connecting new clients to the system. The client device 24a may send a request for information to the system 20, e.g., processing platform 30. The processing platform 30 determines whether the source of information 22a or the processing elements 28 have the requested information. If the source of information 22a has the requested information (it is assumed that none of the processing elements 28 have the requested information), then the processing platform 30 establishes a communication path 32 and 34 between the source of information 22a and the requesting client device 24a. While this specific example is explained based on the assumption that the processing platform 30 communicates with the source of information 22, the processing elements 28 and the client device 24 for determining where the information is stored and when the information is available, it is possible that part or all of the
communication controls are distributed at the elements of system 20.
[0042] The establishment of the communication path 32 and 34 by the processing platform 30 involves a determination of an appropriate processing element 28a to be included in the communication path. The appropriate processing element is selected to meet the requirements on the requirement list or lists discussed above. In one application, such a requirement may include that the processing element is the closest to the client device, from a geographical point of view.
[0043] After the communication path 32 and 34 is established, the processing platform 30 may provide one or more of the following steps: instruct the source of information 22a to provide the requested information to the corresponding processing element 28a; instruct the client device 24a that processing element 28a has the requested information; and instruct the processing element 28a to provide the requested information to the client device 24a. As noted above, these instructions may be provided by other elements of the system 20. The same may be true for client 24b.
[0044] Assume now that three more client devices 24c to 24e have joined the system 20 as shown in Figure 5. The processing platform 30 is configured to activate two new processing elements 28b and 28c to serve the new client devices. Thus, communication path 32 have been extended to reach the new processing element 28b and new communication branches 36 and 38 have been added between the processing element 28b and client devices 24c and 24d. The same is true for new processing element 28c, communication path 40, and communication branch 42. In other words, the processing platform 30 has the ability to
activate/create new processing elements 28 and to establish new communication paths and/or branches as new client devices attach to the system 20. The processing platform 30 also insures that the new components and communication channels comply with the list of requirements stored in the system. While this exemplary embodiment is discussed under the assumption that information is provided from the source of information to the client device, it might be the case that information is provided in the opposite direction. For example, the client devices or W some processing elements may collect and aggregate sensor data, collect usage statistics from video clients, and transfer this information to the source of information or other processing elements. Thus, data mining and (sensor) data
merging/aggregation may be performed at the client devices and/or processing elements and transmitted up the communication path.
[0045] In an exemplary embodiment illustrated in Figure 6, an opposite process may be implemented in system 20 and/or processing platform 30. More specifically, the processing platform 30 may be configured not only to
create/establish communication paths and branches but also to remove the unused ones. Consider that client device 24a has received the requested information and communication branch 34 is not used. The processing platform 30 may determine, based on known processing, that communication branch 34 is not in use. Thus, the processing platform 30 may decide to remove the communication branch 34. The same is true for clients 24b and 24e in Figure 6.
[0046] According to another exemplary embodiment, the communication paths may be configured to transport the same information to various client devices connected to the communication paths. For example, with regard to Figure 6, communication path 32 may be configured to provide a same movie to both client devices 24c and 24d. However, it is possible that the communication path 32 is configured to transmit different information between the two client devices 24c and 24d. In addition, it is noted that the above discuses examples may take place between the source of information 22b and its corresponding processing elements and client devices.
[0047] The auto-scaling information distribution features of the system discussed in the exemplary embodiments are now discussed and implemented in a generic system that is illustrated in Figures 7 and 8. For simplicity, it is assumed that the information is provided from the source of information to the client device (parent to children). However, in one application, the information is provided in an opposite direction, e.g., from the client device or processing element to an upper processing element or source of information. In other words, the directions shown in Figures 7 and 8 may be reverted. Figure 7 illustrates a possible communication exchange among the various elements of the system 20 while Figure 8 maps some of the communication exchanges to a physical representation of the system. With regard to Figure 7, in an exemplary embodiment, a client device 24 may request in step (1) to receive certain information. The processing platform 30 receives the request from the client device 24 and determines in step (2) whether an appropriate processing element 28 is active in the system. If such element is not active a new processing element 28 is created/activated. This last action is illustrated in steps (3) to (5).
[0048] In step (3), the processing platform 30 sends a request to create the processing element to a counterpart processing platform part 30a that resides in a processing node 50. In this regard, it is noted that the processing node is a physical node (e.g., server, radio base station, router, laptop, etc.) while the processing element is a physical node or a virtual slice of a physical node (e.g., virtual machine running in a hypervisor on the physical node). The processing node 50 may also include the processing element 52 to be created. In step (4), the processing platform part 30a creates the processing element 52 and in step (5) information to that effect is sent to the processing platform 30. Further clarification about the processing platform 30 is provided now. In a given system, the processing platform 30 includes software components. These components are distributed to the processing elements 28, processing nodes 50, source of information 22, etc. or centralized in a single location.
[0049] In step (7), the processing platform 30 determines the most suitable source of information 22 and the most suitable processing element or elements 28 based, for example, on system requirements, topology, processing node capabilities, etc. In terms of the processing node capabilities or the processing elements capabilities, it is noted that these elements may be configured to perform not only simply operations as those performed, for example, by a router, but more advanced operations, as for example, caching, transcoding, compressing, archiving, collecting statistics or performing other computations. Such other computations may include, for example, data mining and (sensor) data merging/aggregation.
[0050] Having in place the most suitable processing elements and the source of information, the processing platform 30 sends in step (8) a handle and the client device's request to the selected processing element 50. A handle is a symbolic name that can be translated to an addressable instance or reference, e.g., an IP address and port number. This abstraction and translation may be part of the processing platform 30. The selected processing element 50 sends in step (9) the request from the client device to the processing platform component 23a at the source of information 22 (or another processing element if more than one processing element 50 is in the communication path). The source of information may
acknowledge the request in step (10). Figure 7 shows that the source of information 22 includes the processing platform component 23a and the physical part 23b.
[0051] In step (1 ), the source of information 22 starts to deliver the requested info to the processing element 50. In step ( 2), the processing element 50 informs the processing platform component 30a that the requested information is ready to be provided to the client device. In steps (13) and (14) the processing platform component 30a communicates with the processing platform 30 and the client device 24 that the requested information is ready to be provided and also provides the client device 24 with the handle for the processing element 28 that will provide the requested information.
[0052] After some protocol steps ( 5) and (16) for establishing the connection between the client device 24 and the processing element 50, the requested information is delivered in step ( 7) from the processing element 50 to the client device 24. Figure 7 also shows a processing platform component 25 that is installed at the client device 24 and is involved in some of the above discussed steps.
[0053] While Figure 7 has been described with regard to steps (1) to (17), it is noted that some of the steps are optional. Also, the novel features may be implemented by using different steps. In other words, the steps shown in Figure 7 and discussed above are intended to illustrate one possible approach for
implementing the novel features and not to limit the implementation and applicability of the novel features.
[0054] While the processing elements 28 have been discussed above with regard to possible functions hosted in these elements, it is now discussed in more details the structure of one possible processing element. Referring to Figure 9, a processing element 28 may include a processor and/or dedicated circuitry for achieving the following functionalities. Although arrows are used to indicate the flow of information, as already mentioned above, the direction of the arrows may be reversed and information may be sent from the client devices to the processing elements and/or the source of information. For simplicity, Figure 9 is discussed assuming that the information flows from the source of information to the client devices. An input interface 60 facilitates communication between the processing element 28 and other processing elements, the source of information, and/or the processing platform 30. The incoming information is directed to a request/data management unit 62 that either directs the information to a cache unit 64 or sends it to a distribution unit 66. The management unit 62 may be configured to perform management functions as known in the art. This unit may include a source controller unit 68 configured to communicate via an interface 70 with various elements of the system 20. For example, the interface 70 may communicate with parents 72 or children 74 in the communication path to which the processing element 28 belongs. The parents and children are the predecessors and successors, respectively in the communication path or branch.
[0055] The source controller 68 also interacts with a switching unit 76 that is configured to provide to the distribution unit 66 either information received directly from input 60 or information already stored in cache unit 64. The information from the switching unit 76 is provided to the distribution unit 66 where various paths are possible. One possibility is that the information goes directly to a corresponding branch or children to which the processing element 28 is connected. This path is labeled in the figure as a' and β,'. Another possibility is to apply some common processing in unit 78 and then to provide the information directly to the branches. This path is labeled as a and β,'. The common processing may be, for example, inserting advertisement that is common to a certain geographical area and the location of the processing element 28 may be used to define the geographical area.
[0056] Still another path may include applying the common processing followed by applying branch specific processing. This path is labeled as a and β,. Branch specific processing is performed in unit 80 and an example of branch specific processing includes applying transcoding to adapt a video stream bit rate to the capabilities of a sub branch. The sub branch may be, for example, the
communication path between the processing element and a specific client device. Another example of branch specific processing is the insertion of street specific advertisement given that the common processing is city specific. Other processing operations are possible and other combinations of processing may be achieved.
[0057] According to an exemplary embodiment illustrated in Figure 10, there is a method for auto-scaling information distribution in a network having distributed processing elements. The method includes a step 1000 of receiving at a processing platform a first request for information from a first client device; a step 002 of determining a source of information that stores the information; a step 004 of dynamically selecting from the distributed processing elements at least one processing element to establish a communication path between the first client device and the source of information such that the at least one processing element satisfy a first requirement list; a step 1006 of creating, if the processing platform does not select the at least one processing element to satisfy the first requirement list, the at least one processing element; and a step 1008 of transferring the information to the first client device. The first requirement list includes at least one of a location of the at least one processing element relative to the first client device, network
requirements, and processing capabilities of the at least one processing element.
[0058] The step of transferring the information to the first client device may be achieved by applying a push mechanism or a pull mechanism. The push
mechanism includes, sending the information from the source of information to the at least one processing element and sending the same information from the at least one processing element to the first client device. The pull mechanism includes, the first client device requesting the information from the at least one processing element and the at least one processing element requesting the information from the source of information. In these implementations, either the source of information keeps track of all children or the first client device keeps track of all elements above it along the communication path.
[0059] One or more of the embodiments discussed above provides a system with highly scalable in-network mechanisms to build Internet-wide information distribution systems, in particular media services like Spotify, Voddler, or (the original) Joost. In addition, such embodiments simplify the development process for the system developer by taking care of many complexities related to scaling of resources. The developer can concentrate on the functionality and design of the software components, while the novel features discussed above assists to scale and distribute them.
[0060] Also, the traffic volume in the network is reduced since several consumers can share branches in the distribution topology. The novel system permits the network operator to deploy processing nodes (e.g., servers) in its network and make those nodes available to third party without having to reveal details about how the network is designed and structured. The users can still request servers based on location requirements, etc., without having to know all the internal details
[0061] For purposes of illustration and not of limitation, an example of a representative processing element capable of carrying out operations in accordance with the exemplary embodiments is illustrated in Figure 11. It should be recognized, however, that the principles of the present exemplary embodiments are equally applicable to standard computing systems. Hardware, firmware, software or a combination thereof may be used to perform the various steps and operations described herein. The processing element 1100 of Figure 11 is an exemplary computing structure that may be used in connection with such a system.
[0062] The exemplary processing element 1100 suitable for performing the activities described in the exemplary embodiments may include server 1101. Such a server 1 01 may include a central processor (CPU) 1102 coupled to a random access memory (RAM) 1104 and to a read-only memory (ROM) 1106. The ROM 1106 may also be other types of storage media to store programs, such as programmable ROM (PROM), erasable PROM (EPROM), etc. The processor 1102 may communicate with other internal and external components through input/output (I/O) circuitry 1108 and bussing 1110, to provide control signals and the like. The processor 1102 carries out a variety of functions as is known in the art, as dictated by software and/or firmware instructions.
[0063] The server 1101 may also include one or more data storage devices, including hard and floppy disk drives 1112, CD-ROM drives 1114, and other hardware capable of reading and/or storing information such as DVD, etc. In one embodiment, software for carrying out the above discussed steps may be stored and distributed on a CD-ROM 1116, diskette 1118 or other form of media capable of portably storing information. These storage media may be inserted into, and read by, devices such as the CD-ROM drive 1114, the disk drive 1112, etc. The server 1101 may be coupled to a display 1120, which may be any type of known display or presentation screen, such as LCD displays, plasma display, cathode ray tubes (CRT), etc. A user input interface 1122 is provided, including one or more user interface mechanisms such as a mouse, keyboard, microphone, touch pad, touch screen, voice-recognition system, etc. [0064] The server 1101 may be coupled to other computing devices, such as the landline and/or wireless terminals and associated watcher applications, via a network. The server may be part of a larger network configuration as in a global area network (GAN) such as the Internet 1128, which allows ultimate connection to the various landline and/or mobile client/watcher devices.
[0065] The disclosed exemplary embodiments provide a network and a method for auto-scaling information distribution. It should be understood that this description is not intended to limit the invention. On the contrary, the exemplary embodiments are intended to cover alternatives, modifications and equivalents, which are included in the spirit and scope of the invention as defined by the appended claims. Further, in the detailed description of the exemplary
embodiments, numerous specific details are set forth in order to provide a comprehensive understanding of the claimed invention. However, one skilled in the art would understand that various embodiments may be practiced without such specific details.
[0066] As also will be appreciated by one skilled in the art, the exemplary embodiments may be embodied in a wireless communication device, a
telecommunication network, as a method or in a computer program product.
Accordingly, the exemplary embodiments may take the form of an entirely hardware embodiment or an embodiment combining hardware and software aspects. Further, the exemplary embodiments may take the form of a computer program product stored on a computer-readable storage medium having computer-readable instructions embodied in the medium. Any suitable computer readable medium may be utilized including hard disks, CD-ROMs, digital versatile disc (DVD), optical storage devices, or magnetic storage devices such a floppy disk or magnetic tape. Other non-limiting examples of computer readable media include flash-type memories or other known memories.
[0067] Although the features and elements of the present exemplary embodiments are described in the embodiments in particular combinations, each feature or element can be used alone without the other features and elements of the embodiments or in various combinations with or without other features and elements disclosed herein. The methods or flow charts provided in the present application may be implemented in a computer program, software, or firmware tangibly embodied in a computer-readable storage medium for execution by a specifically programmed computer or processor.

Claims

WHAT IS CLAIMED IS:
1. A method for auto-scaling information distribution in a network (20) having distributed processing elements (28), the method comprising:
receiving at a processing platform (30) a first request for information from a first client device (24a);
determining a source of information (22a) that stores the information;
dynamically selecting from the distributed processing elements (28) at least one processing element (28a) to establish a communication path (32, 34) between the first client device (24a) and the source of information (22a) such that the at least one processing element (28a) satisfy a first requirement list, wherein the first requirement list includes at least one of a location of the at least one processing element relative to the first client device, network requirements, and processing capabilities of the at least one processing element;
if the processing platform (30) does not select the at least one processing (28a) element to satisfy the first requirement list, creating the at least one processing element; and
transferring the information to the first client device (24a).
2. The method of Claim 1 , further comprising:
applying a push mechanism or a pull mechanism for transferring the information to the first client device, wherein
the push mechanism includes, sending the information from the source of information to the at least one processing element and sending the same information from the at least one processing element to the first client device, and the pull mechanism includes, the first client device requesting the information from the at least one processing element and the at least one processing element requesting the information from the source of information.
3. The method of Claim 1, further comprising:
receiving at the processing platform a second request for the information from a second client device;
determining whether the at least one processing element satisfies a second requirement list that includes at least one of the location of the at least one processing element relative to the second client device, network requirements, and processing capabilities of the at least one processing element;
establishing a communication branch between the at least one processing element and the second client device if the second requirement list is satisfied;
selecting another processing element or creating another processing element if the second requirement list is not satisfied; and
providing the information from the at least one processing element or the another processing element to the second client device.
4. The method of Claim 1, wherein the first or second requirement list includes one or more of a condition to minimize a delay time between the first or second user device and the at least one processing element, a predetermined bandwidth between the source of information and the at least one processing element, a predetermined bandwidth between the at least one processing element and another processing element along the communication path, a predetermined maximum number of processing elements along the communication path, and a predetermined amount of storage space in the at least one processing element.
5. The method of Claim 1 , further comprising:
processing the information at the at least one processing element, wherein such processing includes at least one of transcoding, caching, compressing, archiving, collecting statistics, data mining, data merging, data aggregation or performing other computations.
6. The method of Claim 1 , further comprising:
removing communication paths when client devices are not available.
7. The method of Claim , wherein the processing platform is implemented in software and distributed at the first client device, the at least one processing element, and the source of information.
8. The method of Claim 1 , wherein the at least one processing element is one of a server, radio base station, router, or laptop.
9. The method of Claim 8, wherein the server is configured to provide the information to plural client devices and to provide supplementary information in addition to the information such that the supplementary information is location relevant.
10. The method of Claim 9, wherein the server is configured to process the information independently for each client device.
11. A network (20) configured to auto-scale information distribution, the network (20) comprising:
distributed processing elements (28); and
a processing platform (30) provided on one or more of the distributed processing elements (28) and configured to
receive a first request for information from a first client device (24a), determine a source of information (22a) that stores the information, dynamically select from the distributed processing elements (28) at least one processing element (28a) to establish a communication path (32, 34) between the first client device (24a) and the source of information (22a) such that the at least one processing element (28a) satisfy a first requirement list, wherein the first requirement list includes at least one of a location of the at least one processing element relative to the first client device, network requirements, and processing capabilities of the at least one processing element,
if the processing platform (30) does not select the at least one processing element (28a) to satisfy the first requirement list, create the at least one processing element, and
transferring the information to the first client device (24a).
12. The network of Claim 11 , wherein the processing platform is configured to apply a push mechanism or a pull mechanism for transferring the information to the first client device, wherein
the push mechanism includes, sending the information from the source of information to the at least one processing element and sending the same information from the at least one processing element to the first client device, and
the pull mechanism includes, the first client device requesting the information from the at least one processing element and the at least one processing element requesting the information from the source of information.
13. The network of Claim 1 , wherein the processing platform is further configured to:
receive at the processing platform a second request for the information from a second client device;
determine whether the at least one processing element satisfies a second requirement list that includes at least one of the location of the at least one processing element relative to the second client device, network requirements, and processing capabilities of the at least one processing element;
establish a communication branch between the at least one processing element and the second client device if the second requirement list is satisfied; select another processing element or creating another processing element if the second requirement list is not satisfied; and
provide the information from the at least one processing element or the another processing element to the second client device.
14. The network of Claim 11 , wherein the first or second requirement list includes one or more of a condition to minimize a delay time between the first or second user device and the at least one processing element, a predetermined bandwidth between the source of information and the at least one processing element, a predetermined bandwidth between the at least one processing element and another processing element along the communication path, a predetermined maximum number of processing elements along the communication path, and a predetermined amount of storage space in the at least one processing element.
15. The network of Claim 11 , wherein the processing platform is further configured to:
process the information at the at least one processing element, wherein the process includes at least one of transcoding, caching, compressing, archiving, collecting statistics, data mining, data merging, data aggregation, or other computations.
16. The network of Claim 11 , wherein the at least one processing elements comprises:
a management data unit configured to direct the information to a cache unit or to a distribution unit;
the cache unit connected to the management data unit and configured to cache the information;
the distribution unit connected to the management data and configured to distribute the information to client devices; a common processing unit connected to the distribution unit and configured to apply a same processing to the information; and
a branch specific processing unit connected to the distribution unit and configured to process the information differently for each branch.
17. The network of Claim 11 , wherein the processing platform is further configured to:
remove communication paths when client devices are not available.
18. The network of Claim 11 , wherein the processing platform is implemented in software and distributed at the first client device, the at least one processing element, and the source of information.
19. The network of Claim 1 , wherein the at least one processing element is one of a server, radio base station, router, or laptop.
20. The network of Claim 18, wherein the server is configured to provide the information to plural client devices and to provide supplementary information in addition to the information such that the supplementary information is location relevant.
21. The network of Claim 19, wherein the server is configured to process the information independently for each client device.
PCT/IB2010/001068 2010-05-10 2010-05-10 System and method for auto-scaling information distribution using distributed processing elements WO2011141759A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/IB2010/001068 WO2011141759A1 (en) 2010-05-10 2010-05-10 System and method for auto-scaling information distribution using distributed processing elements

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2010/001068 WO2011141759A1 (en) 2010-05-10 2010-05-10 System and method for auto-scaling information distribution using distributed processing elements

Publications (1)

Publication Number Publication Date
WO2011141759A1 true WO2011141759A1 (en) 2011-11-17

Family

ID=43516841

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2010/001068 WO2011141759A1 (en) 2010-05-10 2010-05-10 System and method for auto-scaling information distribution using distributed processing elements

Country Status (1)

Country Link
WO (1) WO2011141759A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117798A1 (en) * 2002-12-12 2004-06-17 Xerox Corporation Methods, apparatus, and program products for abstract applications/components in a ubiquitous computing environment
WO2007146368A2 (en) * 2006-06-15 2007-12-21 International Business Machines Corporation Method and apparatus for on-demand composition and teardown of service infrastructure
US20080059557A1 (en) * 2006-03-31 2008-03-06 Desantis Peter N Executing programs based on user-specified constraints

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117798A1 (en) * 2002-12-12 2004-06-17 Xerox Corporation Methods, apparatus, and program products for abstract applications/components in a ubiquitous computing environment
US20080059557A1 (en) * 2006-03-31 2008-03-06 Desantis Peter N Executing programs based on user-specified constraints
WO2007146368A2 (en) * 2006-06-15 2007-12-21 International Business Machines Corporation Method and apparatus for on-demand composition and teardown of service infrastructure

Similar Documents

Publication Publication Date Title
US9307016B2 (en) Mobile device workload management for cloud computing using SIP and presence to control workload and method thereof
US8676984B2 (en) Live directory of cloud tenants to enable inter-tenant interaction via cloud
EP2592550B1 (en) Distributed mapping function for large scale media clouds
Kogias et al. Cloud federation and the evolution of cloud computing
Li et al. Study on service-oriented Cloud conferencing
Benkacem et al. Performance benchmark of transcoding as a virtual network function in CDN as a service slicing
Achar Cloud-based System Design
Kim et al. CloudDMSS: robust Hadoop-based multimedia streaming service architecture for a cloud computing environment
Soltanian et al. A cloud-based architecture for multimedia conferencing service provisioning
Konstantoudakis et al. Serverless streaming for emerging media: towards 5G network-driven cost optimization: A real-time adaptive streaming FaaS service for small-session-oriented immersive media
Teixeira et al. User provided cloud computing
Panarello et al. A big video data transcoding service for social media over federated clouds
US9116748B2 (en) System and method for determining processing elements allocation
Pathan et al. An architecture for virtual organization (VO)-based effective peering of content delivery networks
Wei et al. AIMING: Resource Allocation with Latency Awareness for Federated‐Cloud Applications
WO2011141759A1 (en) System and method for auto-scaling information distribution using distributed processing elements
Singh et al. The structure of cloud engineering
Peng et al. A network virtualization framework for IP infrastructure provisioning
Trnkoczy et al. SWITCH-ing from multi-tenant to event-driven videoconferencing services
Shishira et al. A comprehensive survey on federated cloud computing and its future research directions
Haider et al. Taxonomy and issues for antifragile-based multimedia cloud computing
Caviglione et al. Evolution of peer-to-peer and cloud architectures to support next-generation services
Fornito et al. Broadcast Media Creation as a Service: Using Infrastructure-As-Code and the Public Cloud to Power On-Air Media Creation Platforms
Bucchiarone et al. Qos composition of services for data-intensive application
Muhammad et al. Service orchestration over clouds and networks

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10728881

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10728881

Country of ref document: EP

Kind code of ref document: A1