Patent Description:
Cloud computing is a technique that is being used for a wide variety of enterprise and end-user applications. Providers offer varying service portfolios that differ in resource configurations and services that can be provided. A comprehensive solution for allocation of resources is fundamental to any cloud computing service provider. Any resource allocation model has to consider available computational resources as well as network resources, to accurately reflect practical demands. Resource allocation algorithms aim to accomplish the task of scheduling virtual machines on the servers residing in data centers, in order to schedule available network resources in a way that complies with the problem constraints. Several external and internal factors that affect the performance of resource allocation models have been considered in the past.

However, as cloud computing platforms adopt virtualization as an enabling technology, it becomes an increasingly challenging task to distribute system resources to each user according to the diverse requirements.

Furthermore, although ample research has already been conducted in order to meet QoS requirements, still, the proposed solutions lack simultaneous support for multiple networks' policies, degrade the aggregated throughput of network resources, and incur CPU overhead.

One typical characteristic that is shared by the various solutions, is based on management of the computing resources by applications which are implemented in a cloud environment (either private or public environment), for example, the management is carried out by the application through adding and removing CPUs that are allocated to that specific application.

<CIT> describes for example a data processing system for managing network resources. Upon receiving a request for resources in the network data processing system, which comprises requested values for a plurality of attributes for the resources in the network data processing system, the potential resources in the network data processing system are identified. The request is evaluated based on proximity scores for the plurality of attributes in the potential resources relative to an ideal allocation of the potential resources and resource weights for the plurality of attributes in the potential resources.

<CIT> discloses an apparatus for managing resources assigned to an application or service. A resource manager maintains a set of workload classes and classifies workloads using workload signatures. For example, the resource manager minimizes or reduces resource management costs by identifying a relatively small set of workload classes during a learning phase, determining preferred resource allocations for each workload class, and then during a monitoring phase, classifying workloads and allocating resources based on the preferred resource allocation for the classified workload.

<CIT> discloses a mobile telecommunications network including a core and a radio access network having radio means for wireless communication with mobile terminals registered with the network, wherein the radio access network includes control means (fig. <NUM>) operable to control the use of network resources by said mobile terminals, wherein the control means is operable to perform Self Organising Network functions. The control means may monitor the device type, customer types and/or application used. The control means may in real time modify radio specific parameters, traffic handling algorithms and/or processor capacity network functions.

<CIT> discloses an SDN application integration, management and control method, system and device, herein the SDN application integration, management and control system includes: an application integration module configured to integrate an SDN application in an application plane, herein integrating an SDN application includes at least one of registering, deregistering and updating the SDN application and reconstructing a plurality of SDN applications; an application management module configured to manage the SDN application in the application plane; and an application control module configured to be aware of and monitor the SDN application in the application plane. By using the SDN application integration, management and control method, system and device, the management of the SDN application is implemented.

<CIT> discloses utilizing collected data from a software-defined networking (SDN) network to diagnose a user experience includes receiving application session quality metrics from an application within a SDN network, collecting network information from network components that carry network traffic of the SDN network, and utilizing the application session quality metrics and the network information to run a diagnostic analysis to improve the user experience in real-time or for future sessions.

<CIT> discloses utilizing collected data from an SDN network to diagnose a user experience by receiving application session quality metrics from an application running within a SDN network, collecting network information from network components that carry network traffic of the SDN network, and utilizing the application session quality metrics and the network information to run a diagnostic analysis to improve the user experience.

<CIT> describes transmitting data in a broadcast mode to multiple devices operating in a network, a solution that enables efficient utilization of bandwidth while providing a desired level of quality of service for the applications executing on the devices that utilize the broadcasted data.

It is an object of the present disclosure to provide a system and a method for improving performance of data processing.

It is another object of the present disclosure to provide a device and a method for affecting control over network resources via a network element such as a router.

It is another object of the present disclosure to provide a device and a method to enable a software application to communicate with a router and exchange messages therewith in order to allow the router to control network resources utilized by that software application.

Other objects of the present disclosure will become apparent from the following description.

According to an illustrative example, there is provided a network element (e.g. a router) operative in an IP-based communication network (e.g. a cloud computing environment in an IP-based computer network that provides, on demand, networking resources and data to devices comprised in the IP-based communication network, for running at least a first software application and a second software application), and configured to manage networking resources by affecting changes at the communication network level of networking resources associated with the communication network that are being utilized by the first software application, wherein the changes are affected in response to obtaining information retrieved from an application program interface (API) associated with the first software application by users communicating with said first software application, and in case that the second software application has a low demand for networking resources, then the first software application is configured to use these networking resources on request, and wherein the first software application is configured to assess a new user's experience, achieved after the change in the networking resources had been affected, of users communicating with said first software application.

According to another illustrative example, the information retrieved from the API comprises values of key performance indicators (KPIs) associated with that software application.

By yet another illustrative example, the network element is a member selected from a group that comprises a router, a switch and the like.

According to another illustrative example, there is provided a method for use by a network element operative in an IP-based communication network (e.g. a cloud computing environment in an IP-based computer network), for managing resources that are being utilized by a software application, wherein the method comprises affecting changes by the network element in these resources, in response to obtaining information retrieved from an application program interface (API) associated with that software application.

In accordance with another illustrative example, the information retrieved from the API comprises values of key performance indicators (KPIs) associated with said software application.

According to anther illustrative example of this aspect of the disclosure, the method comprises the steps of:.

By still another embodiment, the method further comprising:.

According to yet another embodiment of this aspect of the invention, the network element is a router.

In accordance with still another illustrative example, the software application is registered with the router via a network API to enable the router to identify the user experience, based on retrieved values of (KPIs) associated with the software application.

According to another illustrative example, the information provided in step (ii) is information that relates to a user experience as reflected by the router and/or by the communication network.

By still another illustrative example, the information that would enable the network element to affect changes in the resources provided in step (iii), comprises one or more indications that respective pre-defined KPI thresholds have been crossed.

According to still another illustrative example, the changes affected in step (iv) is a member of a group that consists of: changing QoS profile, changing routing metric, and changing virtual routing and forwarding (VRF) of packets.

In accordance with another illustrative example, the method provided is incorporated in a firewall activity to reduce processing load (e.g. calculations) that would otherwise be required to be carried out by the firewall in the case of an attack on the software application, which in turn would result in a request that would be initiated by the firewall to divert or block traffic at the network level.

By still another illustrative example, the software application is a storage software application, and the method is configured to enable routing data being conveyed for storage by the storage software application, in case that an approach to a respective storage device is currently adversely affected by a network congestion.

According to another illustrative example, the method is configured to enable allocating additional bandwidth to the software application in order to overcome a temporary performance problem associated therewith.

In accordance with yet another illustrative example, the software application is configured to affect one or more temporary network operational changes in order to enhance user experience.

The accompanying drawings, which are incorporated herein and constitute a part of this specification, illustrate several illustrative examples and, together with the description, serve to explain the principles of the illustrative examples disclosed herein.

Some of the specific details and values in the following detailed description refer to illustrative examples of the disclosure.

Cloud computing is a form of Internet-based computing that provides shared computer processing resources and data to computers and other devices, on demand. It is a model for enabling ubiquitous, on-demand access to a shared pool of configurable computing resources (e.g., computer networks, servers, storage, applications and services), which can be rapidly provisioned and released while applying minimal management effort. Basically, cloud computing allows the users and enterprises with various capabilities to store and process their data in either privately owned cloud, or on a third-party server in order to make data accessing mechanisms much more easy and reliable. Cloud computing relies on sharing of resources to achieve coherence and economy of scale, similar to a utility (like the electricity grid) over an electricity network.

Applications that are running in a cloud environment are by definition adapted to share computing, storage and networking resources for better utilization of the available resources. The underlying assumption is that if a first application has a low demand for resources, then a second application may use these resources on request. In today's environment, computing resources may indeed be managed this way. Yet, networking resources are more complicated to manage in this manner, mainly due to the fact that the networking layer is traditionally not an integrated component of servers at which the application is installed, but is comprised of networking elements like routers and switches that are managed and dimensioned based on static configurations and pre-assumptions of the required resources for all hosted applications at a given server or data center.

<FIG> illustrates a high-level schematic view of a system (<NUM>) construed in accordance with an illustrative example. System <NUM> is configured to operate by executing a closed loop algorithm for managing network resources that are controlled by a software application, whereas <FIG> exemplifies steps that are taken in order to carry out an illustrative example of the present invention, by which it becomes possible to link between network security, storage, cloud computing services and other network services, thereby enabling a unique user experience with an overall better performance.

Network element <NUM> of <FIG> is a network aware manager, which, according to the present invention may be a router or a switch or any other applicable network element which can be configured to function in compliance with the principles set forth by the present disclosure. Network element <NUM> is depicted in <FIG> as a device configured to communicate with network elements <NUM> and <NUM> which may be for example physical servers and/or white boxes. The term white box is used herein to denote a commodity, being an open or industry-standard compliant hardware for switches and/or routers within the forwarding plane. White boxes provide users with the foundational hardware elements of a network.

Typically, an application program interface (hereinafter: "API") is a set of routines, protocols, and tools for building software applications. An API specifies how software components should interact. Additionally, APIs may be used when programming graphical user interface (GUI) components. A good API makes it easier to develop a program by providing all the building blocks, and then incorporating these blocks together. Most operating environments, such as MS-Windows™ for example, provide APIs, thereby allowing programmers to write applications consistent with the relevant operating environment.

According to an illustrative example, the network element (e.g. router <NUM>) retrieve from the relevant API of one or more software applications, information that relates to at least the following two characteristics associated with the respective software application:.

The term performance indicator or key performance indicator (KPI) as used herein throughout the specification and claims is used to denote a performance measurement. Key performance indicators define a set of values against which to measure. These raw sets of values, which are fed to systems in charge of summarizing the information, are referred to as indicators. KPIs may evaluate the performance of a particular activity associated therewith, and such an evaluation may often lead to the identification of potential improvements.

<FIG> exemplifies a method for using router <NUM> in accordance with an illustrative example.

Step <NUM> - Service identification. In this step, the application is registered with the router via the network visibility API so that the router is able to identify the user experience, based on relevant KPIs once retrieved.

Step <NUM> - Service notification. Based on the retrieved KPIs, the application is notified about the user experience, as reflected by the network/router.

Step <NUM> - Taking an appropriate action by the network element (the router). In case that pre-defined KPIs threshold have been crossed (e.g. exceeded), the router takes an action at the network level in order to enhance the application's user experience. Such actions are for example, changing QoS profile, changing routing metric, changing virtual routing and forwarding ("VRF"), and the like.

Step <NUM> - Feedback. After carrying out a change that has been initiated by the network element (the router), the latter evaluates the results of the affected change and then initiates conveyance of information toward the application, which enables the application to assess the new user experience achieved after the change has been affected.

Following are number of cases exemplifying various implementations of the above-described solution.

The proposed solution may be used by having it integrated with firewalls. In the case of an attack on the application, the firewall may request a traffic diversion or blocking at the network level, and using the proposed solution helps in reducing the amount of processing that would otherwise be required for the firewall to carry out, thereby allowing more services to be carried out by the firewall, and consequently, to enable increasing the firewall's capacity.

The proposed solution may be used by having it integrated with storage applications. For example, in case where there is a plurality of storage devices and the approach to one or more of this plurality of storage devices is currently adversely affected by a network congestion, the respective one or more storage applications may request that the router would change the route of data being conveyed for storage by the one or more respective storage applications, to a better performing route.

The proposed solution may be used by having it integrated with the operative router, so that any application communicating with that router may request allocation of additional bandwidth for its operations in order to overcome temporary performance problems.

Claim 1:
A network element (<NUM>) for a cloud computing environment for an IP-based communication network, wherein said cloud computing environment being an Internet-based computing environment that provides, on demand, networking resources and data to devices comprised in said IP-based communication network, for running at least a first software application and a second software application and wherein said network element (<NUM>) is configured to manage networking resources by affecting changes at the network level of networking resources associated with the communication network that are being utilized by said first software application wherein said changes are affected in response to obtaining information retrieved from an application program interface, API, associated with said first software application, and wherein said obtained information comprises network related control and commands, and information that relates to usage of said first software application by users communicating with said first software application, and in case that said second software application has a low demand for networking resources, then said first software application is configured to use these networking resources on request, and wherein said first software application is configured to assess a new user's experience of users communicating with said first software application, achieved after said change in the networking resources has been affected.