Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
MANAGEMENT OF ANALYTICS TASKS IN A PROGRAMMABLE NETWORK
Document Type and Number:
WIPO Patent Application WO/2017/157447
Kind Code:
A1
Abstract:
Distributed management of analytics tasks in a programmable network (100) having a controller (SDNC, 10, 11), a plurality of network nodes (20, N1-N5) coupled to the controller by a Data Communications Network DCN, and a plurality of analytics servers (30) each coupled to a network node, involves the controller selecting which of the analytics servers to use for an analytics task. The selection is based on how data logged by respective ones of the network nodes and needed for that analytics task, can be routed to the analytics servers. The controller sends to the selected analytics server, an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task.

Inventors:
CECCARELLI DANIELE (SE)
HUANG VINCENT (SE)
WAN QING (SE)
Application Number:
PCT/EP2016/055801
Publication Date:
September 21, 2017
Filing Date:
March 17, 2016
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
ERICSSON TELEFON AB L M (PUBL) (SE)
International Classes:
H04L12/24; H04L12/26; H04L12/803
Foreign References:
EP2908470A12015-08-19
US20160050132A12016-02-18
US20140280338A12014-09-18
Other References:
None
Attorney, Agent or Firm:
BARRETT, Peter (GB)
Download PDF:
Claims:
Claims:

1 . A method of distributed management of analytics tasks in a programmable network having a controller, a plurality of network nodes coupled to the controller by a Data Communications Network DCN, and a plurality of analytics servers each coupled to at least one of the network nodes, the method having steps by the controller of, for each of the analytics tasks to be distributed:

selecting which of the analytics servers to use for that analytics task based on how data logged by respective ones of the network nodes and needed for that analytics task, can be routed to the analytics servers, and

sending to the selected analytics server, an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task, to enable the selected analytics server to carry out the analytics task.

2. The method of claim 1 , and having a step of receiving from the selected analytics server over the DCN, results of carrying out the analytics task.

3. The method of claim 1 or 2 and having a preliminary step of carrying out an auto discovery of what analytics servers are available.

4. The method of claim 3, wherein at least some of the analytics servers are within a routing domain of the controller and the auto discovery comprises receiving indications from these analytics servers that they are available.

5. The method of claim 3 wherein at least some of the analytics servers are not within a routing domain of the controller and the auto discovery comprises receiving an indication from a network node that it has an associated analytics server available.

6. The method of any preceding claim, and having a step of sending to at least one of the network nodes, an indication of what data logged by that network node is to be sent to which of the analytics servers. 7. The method of any preceding claim, having a step of receiving an indication of amounts of spare capacity of the analytics servers.

8. The method of claim 7 when dependent on claim 6, and having a step of sending to at least one of the network nodes an instruction to adapt what logged data is to be sent to which of the analytics servers, according to the indication of amounts of spare capacity of the analytics servers.

9. The method of claim 7 or 8, wherein the step of selecting at least one of the analytics servers is based on the indication of amounts of spare capacity of the analytics servers.

10. The method of any preceding claim, wherein the step of sending indications to the analytics server comprises sending information about any of: what received logged data to store, what received logged data to process, and when to send the results.

1 1 . The method of any preceding claim, wherein the received results of the analytics task comprises selected unprocessed logged data, and the method having the further step of carrying out processing at the controller of the unprocessed logged data.

12. A method of distributed management of analytics tasks in a programmable network having a controller, a plurality of network nodes coupled to the controller by a Data Communications Network DCN, and a plurality of analytics servers each coupled to at least one of the network nodes, the method having steps by one of the network nodes of, for each of the analytics tasks to be distributed: receiving from the controller an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task,

selecting which of the analytics servers to use for that analytics task based on how the logged data needed for that analytics task can be routed to the analytics servers, and

sending to the selected analytics server the indication of the analytics task, and the indication of what data logged by the network nodes is to be used, to enable the selected analytics server to carry out the analytics task.

13. The method of claim 12, and having a preliminary step of carrying out an auto discovery of the analytics servers coupled to the network node.

14. The method of claim 13, wherein at least some of the analytics servers are not within a routing domain of the controller and the auto discovery comprises sending an indication to the controller that the network node has an analytics server coupled to it and available.

15. The method of any of claims 12 to 15, and having steps of receiving from the controller, an indication of what data logged by that network node is to be sent to which of the analytics servers, and sending the logged data according to that indication.

16. The method of any of claims 12 to 15, having a step of receiving an indication of amounts of spare capacity of the analytics servers, and making the selection of which of the analytics servers to use according to the amounts of spare capacity.

17. The method of claim 16 when dependent on claim 15, and having a step of adapting what logged data is to be sent by the network node to which of the analytics servers, according to the indication of amounts of spare capacity of the analytics servers.

18. A method of distributed management of analytics tasks in a programmable network, the programmable network having a controller, a plurality of network nodes coupled to the controller by a Data Communications Network DCN, and a plurality of analytics servers each coupled to at least one of the network nodes, the method having steps by one of the analytics servers of:

cooperating with the controller to enable the controller to select which analytics server to use for one of the analytics tasks on the basis of how data logged by the network nodes and needed for that analytics task can be routed to the analytics servers,

receiving an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task,

receiving the indicated logged data,

carrying out the analytics task on that received logged data, and

sending to another part of the programmable network over the DCN, results of carrying out the analytics task.

19. The method of claim 18, and having a preliminary step of responding to an auto discovery of what analytics servers are available.

20. The method of claim 19, wherein the analytics server is within a routing domain of the controller and the responding step comprises sending to the controller an indication that it is available.

21 . The method of claim 19 wherein the analytics server is not within a routing domain of the controller and the responding step comprises sending an indication of availability to a network node coupled to the analytics server for that network node to send to the controller.

22. The method of any of claims 18 to 21 , having a step of sending to the controller an indication of an amount of spare capacity of the analytics server. 23. The method of any of claims 18 to 22, and having a step of sending to the controller a request to adapt what logged data is to be sent to the analytics server, after the analytics server has started carrying out that task. 24. The method of any of claims 18 to 23, wherein the step of receiving the indication of the analytics task comprises receiving information about any of: what received logged data to store, what received logged data to process, and when to send the results. 25. The method of any of claims 18 to 23, wherein the step of sending results of the analytics task comprises sending selected unprocessed logged data for further processing at the controller.

26. The method of any of claims 18 to 24 and having a step of delaying the sending step according to a load on at least one of: the DCN and the controller.

27. A computer program having instructions that when executed by a processor cause the processor to carry out the method of any of claims 1 to 26.

28. A computer program product comprising a computer readable medium having stored on it the computer program of claim 27. 29. A controller for distributing analytics tasks in a programmable network having a plurality of network nodes coupled to the controller by a Data Communications Network DCN, and a plurality of analytics servers each coupled to at least one of the network nodes, the controller having a processing circuit and a memory circuit, the memory circuit having instructions executable by the processor circuit, wherein said processing circuit when executing the instructions is configured to, for each of the analytics tasks to be distributed:

select which of the analytics servers to use for that analytics task based on how data logged by respective ones of the network nodes and needed for that analytics task, can be routed to the analytics servers, and

send to the selected analytics server, an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task, to enable the selected analytics server to carry out the analytics task.

30. The controller of claim 29, and the processing circuit is also configured to receive from the selected analytics server over the DCN, results of carrying out the analytics task

31 . The controller of claim 29 or 30, and the processing circuit is also configured to carry out an auto discovery of what analytics servers are available. 32. The controller of claim 31 , wherein at least some of the analytics servers are within a routing domain of the controller and the processing circuit is also configured to receive indications from these analytics servers that they are available as part of the auto discovery. 33. The controller of claim 31 , wherein at least some of the analytics servers are not within a routing domain of the controller and the processing circuit is also configured to receive an indication from a network node that it has an associated analytics server available as part of the auto discovery. 34. The controller of any of claims 30 to 33, and the processing circuit is also configured to send to at least one of the network nodes, an indication of what data logged by that network node is to be sent to which of the analytics servers.

35. The controller of any of claims 30 to 34, and the processing circuit is also configured to receive an indication of amounts of spare capacity of the analytics servers.

36. The controller of claim 35, and the processing circuit is also configured to send to at least one of the network nodes an instruction to adapt what logged data is to be sent to which of the analytics servers, according to the indication of amounts of spare capacity of the analytics servers.

37. The controller of claim 35 or 36, and the processing circuit is also configured to carry out the selecting at least one of the analytics servers based on the indication of amounts of spare capacity of the analytics servers.

38. The controller of any of claims 30 to 37, and the processing circuit is also configured such that the sending of the indications to the analytics server comprises sending information about any of: what received logged data to store, what received logged data to process, and when to send the results.

39. The controller of any of claims 30 to 38, wherein the received results of the analytics task comprises selected unprocessed logged data, and the processing circuit is also configured to carry out processing at the controller of the unprocessed logged data.

40. A network node of a programmable network, the programmable network having a controller, a plurality of such network nodes coupled to the controller by a Data Communications Network DCN, and a plurality of analytics servers each coupled to at least one of the network nodes, the network node being configured to distribute analytics tasks and having a processing circuit and a memory circuit, the memory circuit having instructions executable by the processor circuit, wherein said processing circuit when executing the instructions is configured to, for each of the analytics tasks to be distributed:

receive from the controller an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task,

select which of the analytics servers to use for that analytics task based on how the logged data needed for that analytics task can be routed to the analytics servers, and

send to the selected analytics server the indication of the analytics task, and the indication of what data logged by the network nodes is to be used, to enable the selected analytics server to carry out the analytics task.

41 . The node of claim 40, and the processing circuit is also configured to carry out a preliminary step of auto discovery of the analytics servers coupled to the network node.

42. The node of claim 41 , wherein at least some of the analytics servers are not within a routing domain of the controller and the processing circuit is also configured to send, as part of the auto discovery, an indication to the controller that the network node has an analytics server coupled to it and available.

43. The node of any of claims 40 to 42, and the processing circuit is also configured to receive an indication of amounts of spare capacity of the analytics servers, and to make the selection of which of the analytics servers to use according to the amounts of spare capacity.

44. The node of claim 43, and the processing circuit is also configured to receive from the controller, an indication of what data logged by that network node is to be sent to which of the analytics servers, and is configured to send the logged data according to that indication.

45. The node of claim 43 or 44, and the processing circuit is also configured to adapt what logged data is to be sent by the network node to which of the analytics servers, according to the indication of amounts of spare capacity of the analytics servers.

46. An analytics server for receiving analytics tasks distributed across a programmable network, the programmable network having a controller, a plurality of network nodes coupled to the controller by a Data Communications Network DCN, and a plurality of such analytics servers each coupled to at least one of the network nodes, the analytics server having a processing circuit and a memory circuit, the memory circuit having instructions executable by the processor circuit, wherein said processing circuit when executing the instructions is configured to:

cooperate with the controller to enable the controller to select which analytics server to use for one of the analytics tasks on the basis of how data logged by the network nodes and needed for that analytics task can be routed to the analytics servers,

receive an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task,

receive the indicated logged data,

carry out the analytics task on that received logged data, and

send to another part of the programmable network over the DCN, results of carrying out the analytics task. 47. The server of claim 46, and the processing circuit is also configured to, as a preliminary step, respond to an auto discovery of what analytics servers are available.

48. The server of claim 47, wherein the analytics server is within a routing domain of the controller and the processing circuit is also configured to send, as part of the response to the controller, an indication that it is available.

49. The server of claim 47 wherein the analytics server is not within a routing domain of the controller and the processing circuit is also configured to send, as part of the response, an indication of availability, to a network node coupled to the analytics server, for that network node to send to the controller.

50. The server of any of claims 45 to 49, and the processing circuit is also configured to send to the controller an indication of an amount of spare capacity of the analytics server. 51 . The server of any of claims 45 to 50, and the processing circuit is also configured to send to the controller a request to adapt what logged data is to be sent to the analytics server, after the analytics server has started carrying out that task. 52. The server of any of claims 45 to 51 , and the processing circuit is also configured to receive, as part of the receiving of the indication of the analytics task, information about any of: what received logged data to store, what received logged data to process, and when to send the results. 53. The server of any of claims 45 to 52, and the processing circuit is also configured to send, as part of the sending of the results of the analytics task, selected unprocessed logged data for further processing at the controller.

54. The server of any of claims 45 to 53 and the processing circuit is also configured to delay the sending step according to a current load on at least one of: the DCN and the controller.

55. A controller for distributing analytics tasks in a programmable network having a plurality of network nodes coupled to the controller by a Data Communications Network DCN, and a plurality of analytics servers each coupled to at least one of the network nodes, the controller having:

a selector for selecting, for each of the analytics tasks to be distributed, which of the analytics servers to use for that analytics task, based on how data logged by respective ones of the network nodes and needed for that analytics task, can be routed to the analytics servers, and

a sending unit for sending to the selected analytics server, an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task, to enable the selected analytics server to carry out the analytics task.

56. A network node of a programmable network, the programmable network having a controller, a plurality of such network nodes coupled to the controller by a Data Communications Network DCN, and a plurality of analytics servers each coupled to at least one of the network nodes, the network node being configured to distribute analytics tasks and having:

a receiver for receiving from the controller, an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task,

a selector for selecting which of the analytics servers to use for that analytics task based on how the logged data needed for that analytics task can be routed to the analytics servers, and

a sending unit for sending to the selected analytics server the indication of the analytics task, and the indication of what data logged by the network nodes is to be used, to enable the selected analytics server to carry out the analytics task.

57. An analytics server for receiving analytics tasks distributed across a programmable network, the programmable network having a controller, a plurality of network nodes coupled to the controller by a Data Communications Network DCN, and a plurality of such analytics servers each coupled to at least one of the network nodes, the analytics server having:

a unit for cooperating with the controller to enable the controller to select which analytics server to use for one of the analytics tasks on the basis of how data logged by the network nodes and needed for that analytics task can be routed to the analytics servers, a receiver for receiving an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task, a receiver for receiving the indicated logged data,

an analytics unit for carrying out the analytics task on that received logged data, and

a sending unit for sending to another part of the programmable network over the DCN, results of carrying out the analytics task.

Description:
MANAGEMENT OF ANALYTICS TASKS IN A PROGRAMMABLE NETWORK

Technical Field

The present invention relates to methods of managing distributed analytics tasks in a programmable network, to computer programs for such methods, to controllers for managing distributed analytics tasks, network nodes for distributing analytics tasks, and analytics servers for receiving analytics tasks and cooperating with the controller.

Background

It is known to provide programmable networks for communication of information.

One known type of programmable network is an SDN (Software-defined networking). SDN is an approach to network control that allows network administrators to manage network services through abstraction of lower-level functionality. This is done by decoupling the control plane from the data plane, where the SDN controller as the control plane makes the decision how the device in data plane should behave. SDN is used typically for transport networks, as they migrate from a fully distributed control to a paradigm that is commonly known as SDN 2.0. In SDN 2.0 protocols keep on being distributed but the overall control of the network is logically centralized.

SDN requires some method for the control plane to communicate with the data plane. One such mechanism, OpenFlow, is often misunderstood to be equivalent to SDN, but other mechanisms could also fit into the concept. In SDN there is an

SDN Controller, a logically centralized entity, used for translating the requirements from the SDN Application layer down to the SDN Data path, and for providing SDN Applications with an abstract view of the network (which may include statistics and events). An SDN Controller usually consists of one or more NBI Agents, the SDN Control Logic, and the Control to Data-Plane Interface (CDPI) driver. An SDN controller is a strategic control point in the SDN network. By means of both distributed protocols and programmatic interfaces towards the nodes, it is able to get data about the network, logged at the nodes of the network, such as switches and routers. The most common protocols used by the SDN controller to communicate with the switches and routers are OpenFlow , OVSDB, PCEP, netconf, as well as the participation to IGP and BGP instances. It is known to provide for the SDN controller to collect or process such data about the network, logged at the nodes of the network, known generally as analytics, for use by the SDN controller in managing the network, or for use by applications in managing services for users for example. If these analytics tasks become more widely used, they will use up more resources and become more difficult to manage efficiently.

Summary Embodiments of the invention provide improved methods and apparatus. According to a first aspect of the invention, there is provided a method of distributed management of analytics tasks in a programmable network having a controller (SDNC), a plurality of network nodes coupled to the controller by a Data Communications Network DCN, and a plurality of analytics servers each coupled to at least one of the network nodes. The controller is arranged to select, for each of the analytics tasks to be distributed, which of the analytics servers to use for that analytics task based on how data logged by respective ones of the network nodes and needed for that analytics task, can be routed to the analytics servers. Then it sends to the selected analytics server, an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task, to enable the selected analytics server to carry out the analytics task.

Any additional features can be added, and some are described below and set out in dependent claims. Another aspect of the invention provides a method of distributed management of analytics tasks by a network node in a programmable network having a controller (SDNC), a plurality of such network nodes coupled to the controller by a Data Connnnunications Network DCN, and a plurality of analytics servers each coupled to at least one of the network nodes. The network node receives from the controller, for each of the analytics tasks to be distributed, an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task, and selects which of the analytics servers to use for that analytics task based on how the logged data needed for that analytics task can be routed to the analytics servers. The network node sends to the selected analytics server, the indication of the analytics task, and the indication of what data logged by the network nodes is to be used, to enable the selected analytics server to carry out the analytics task.

Another aspect provides a method by an analytics server, of distributed management of analytics tasks in a programmable network, the programmable network having a controller (SDNC), a plurality of network nodes coupled to the controller by a Data Communications Network DCN, and a plurality of such analytics servers each coupled to at least one of the network nodes. The one of the analytics servers carries out steps of cooperating with the controller to enable the controller to select which analytics server to use for one of the analytics tasks on the basis of how data logged by the network nodes and needed for that analytics task can be routed to the analytics servers, and receiving an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task. The analytics server also receives the indicated logged data, carries out the analytics task on that received logged data, and sends to another part of the programmable network over the DCN, results of carrying out the analytics task.

Another aspect of the invention provides a controller for distributing analytics tasks in a programmable network having a plurality of network nodes coupled to the controller by a Data Communications Network DCN, and a plurality of analytics servers each coupled to at least one of the network nodes, the controller having a processing circuit and a memory circuit, the memory circuit having instructions executable by the processor circuit. Said processing circuit when executing the instructions is configured to, for each of the analytics tasks to be distributed, select which of the analytics servers to use for that analytics task based on how data logged by respective ones of the network nodes and needed for that analytics task, can be routed to the analytics servers, and send to the selected analytics server, an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task, to enable the selected analytics server to carry out the analytics task.

Another aspect of the invention provides a network node of a programmable network, the programmable network having a controller, a plurality of such network nodes coupled to the controller by a Data Communications Network DCN, and a plurality of analytics servers each coupled to at least one of the network nodes, the network node being configured to distribute analytics tasks and having a processing circuit and a memory circuit, the memory circuit having instructions executable by the processor circuit. Said processing circuit when executing the instructions is configured to, for each of the analytics tasks to be distributed, receive from the controller an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task, and select which of the analytics servers to use for that analytics task based on how the logged data needed for that analytics task can be routed to the analytics servers. It also sends to the selected analytics server the indication of the analytics task, and the indication of what data logged by the network nodes is to be used, to enable the selected analytics server to carry out the analytics task.

Another aspect of the invention provides an analytics server for receiving analytics tasks distributed across a programmable network, the programmable network having a controller, a plurality of network nodes coupled to the controller by a Data Communications Network DCN, and a plurality of such analytics servers each coupled to at least one of the network nodes, the analytics server having a processing circuit and a memory circuit, the memory circuit having instructions executable by the processor circuit. Said processing circuit when executing the instructions is configured to cooperate with the controller to enable the controller to select which analytics server to use for one of the analytics tasks on the basis of how data logged by the network nodes and needed for that analytics task can be routed to the analytics servers and to receive an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task. It is also configured to receive the indicated logged data, carry out the analytics task on that received logged data, and send to another part of the programmable network over the DCN, results of carrying out the analytics task.

Another aspect provides a controller for distributing analytics tasks in a programmable network having a plurality of network nodes coupled to the controller by a Data Communications Network DCN, and a plurality of analytics servers each coupled to at least one of the network nodes. The controller has a selector for selecting, for each of the analytics tasks to be distributed, which of the analytics servers to use for that analytics task, based on how data logged by respective ones of the network nodes and needed for that analytics task, can be routed to the analytics servers, and a sending unit for sending to the selected analytics server, an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task, to enable the selected analytics server to carry out the analytics task. Optionally the controller also has a receiver for receiving from the selected analytics server over the DCN, results of carrying out the analytics task.

Another aspect provides a network node of a programmable network, the programmable network having a controller, a plurality of such network nodes coupled to the controller by a Data Communications Network DCN, and a plurality of analytics servers each coupled to at least one of the network nodes, the network node being configured to distribute analytics tasks. The network node has a receiver for receiving from the controller, an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task, and a selector for selecting which of the analytics servers to use for that analytics task based on how the logged data needed for that analytics task can be routed to the analytics servers. It also has a sending unit for sending to the selected analytics server the indication of the analytics task, and the indication of what data logged by the network nodes is to be used, to enable the selected analytics server to carry out the analytics task.

Another aspect of the invention provides an analytics server for receiving analytics tasks distributed across a programmable network, the programmable network having a controller, a plurality of network nodes coupled to the controller by a Data Communications Network DCN, and a plurality of such analytics servers each coupled to at least one of the network nodes. The analytics server has a unit for cooperating with the controller to enable the controller to select which analytics server to use for one of the analytics tasks on the basis of how data logged by the network nodes and needed for that analytics task can be routed to the analytics servers, and a receiver for receiving an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task. The analytics server also has a receiver for receiving the indicated logged data, an analytics unit for carrying out the analytics task on that received logged data, and a sending unit for sending to another part of the programmable network over the DCN, results of carrying out the analytics task.

Any additional features may be added to any of the aspects as appropriate. One such additional feature is, the controller receiving from the selected analytics server over the DCN, results of carrying out the analytics task. Another such additional feature is a preliminary step of carrying out an auto discovery of what analytics servers are available. Another is where at least some of the analytics servers are within a routing domain of the controller and the auto discovery comprises receiving indications from these analytics servers that they are available. Another such additional feature is where at least some of the analytics servers are not within a routing domain of the controller and the auto discovery comprises receiving an indication from a network node that it has an associated analytics server available. Another such additional feature is the controller sending to at least one of the network nodes, an indication of what data logged by that network node is to be sent to which of the analytics servers. Another such additional feature is the controller receiving an indication of amounts of spare capacity of the analytics servers. Another such additional feature is the analytics server sending results of the analytics task which include selected unprocessed logged data for further processing at the controller.

Any of the additional features can be combined together and combined with any of the aspects. Other effects and consequences will be apparent to those skilled in the art, especially over compared to other prior art. Numerous variations and modifications can be made without departing from the claims of the present invention.

Brief Description of the Drawings:

How the present invention may be put into effect will now be described by way of example with reference to the appended drawings, in which:

Figs 1 to 8 show examples of sequence charts of methods of distributed management of analytics tasks according to embodiments,

Figs 9 to 12 show schematic views of programmable networks having embodiments,

Figs 13 to 18 show apparatus according to embodiments, and

Fig 19 shows a schematic view of an SDN network having embodiments.

Detailed Description:

The present invention will be described with respect to particular embodiments and with reference to certain drawings but the scope of the invention is not limited thereto. The drawings described are only schematic and are non-limiting. In the drawings, the size of some of the elements may be exaggerated and not drawn to scale for illustrative purposes.

Definitions:

Where the term "comprising" is used in the present description and claims, it does not exclude other elements or steps and should not be interpreted as being restricted to the means listed thereafter. Where an indefinite or definite article is used when referring to a singular noun e.g. "a" or "an", "the", this includes a plural of that noun unless something else is specifically stated. References to instructions, programs, or software can encompass any type of programs in any language executable directly or indirectly on processing hardware. References to processors, hardware, processing hardware or circuitry can encompass any kind of logic or processor or analog circuitry, integrated to any degree, and not limited to general purpose processors, digital signal processors, ASICs, FPGAs, discrete components or logic and so on. References to a processor are intended to encompass implementations using multiple processors which may be integrated together, or co-located in the same node or distributed at different locations for example.

Abbreviations:

ASIC Application Specific Integrated Circuit

BGP Border Gateway Protocol

CDPI Control to Data-Plane Interface

DCN Data Communication Network

FPGA Field Programmable Gate Array

IGP Interior Gateway Protocol

MPLS Multiprotocol Label Switching

NBI North-Bound Interface

OVSDB Open vSwitch Database management protocol

PCEP Path Computation Element Protocol

SDN Software Defined Networking

TE Traffic Engineering

TLV Type Length Value Introduction to issues

By way of introduction to the embodiments, some issues with conventional designs will be explained with reference to the example of SDN, though other programmable networks are also contemplated. With the increased popularity of SDN and advanced requirements on analytics, the data amount to be collected will increase exponentially. The SDN controller will be asked to handle large amounts of data and perform advanced analytics. This could degrade the normal operation of the SDN controller both form a computational point of view and from the huge amount of logged data that would go through the DCN (Data Communication Network). This is a particular problem if the DCN is shared with the control protocols, though it is also a problem even if not shared. The collecting of logged data and processing of analytics tasks in the SDN controller will become cumbersome for the SDN controller to handle. This is even more of a problem as the network and DCN are scaled up over time. For an example of a possible problem, the SDN controllers could be requested to collect and process data from the nodes, with consequent computational/processing burden and possible overload of the DCN during time frames when a prompt intervention from the SDN controller could be needed is needed (e.g. failures and re-routing).

Introduction to embodiments

To address these problems and handle the analytics tasks more efficiently, the proposed methods and apparatus are based on providing analytic servers for data processing and adaptive distributed data processing and routing of data collection in the nodes (switches/routers) and DCN. The controller can receive analytics tasks from applications or generate them itself. Instead of collecting data from all nodes and performing the analytics task at the controller, the controller now distributes the analytics tasks to the analytics servers, either directly or by sending them to nodes to pass on to analytics servers. In some cases this can use a modification of an existing protocol. In some cases the communication between controller and analytics servers can be manually set up, in other cases there can be a discovery mechanism so that analytics servers can be automatically discovered by the nodes and controller. This can provide information about their capabilities and current load. Based on the results of the analytics task, the analytics server can in some examples adapt its operation by ordering more data through SDN controller for example. The controller can inform the network nodes which data needs to be collected and which analytics tasks need to be performed. The nodes or the controller (or both jointly) can discover the availability and location of the analytics server based on their capability and current traffic loads and/or cost and make a decision to choose the most suitable server to perform the analytics task. The data from the nodes can be sent in batch or streaming format. The interface between the controller and nodes can be adapted to support the distribution of the task. At the same time, the control and programmatic protocols can be adapted to support sending the logged data (such as status data e.g. FCAPS) to a centralized data analytic server.

Fig 1 , sequence chart showing actions of embodiments

Figure 1 shows a sequence chart of actions according to embodiments, with time flowing down the figure. A left column shows some actions of a controller 10 relating to managing distributed analytics tasks according to an embodiment. Other functions of the controller in controlling the network are not shown. A central column shows some actions of one of the network nodes 20 relating to managing distributed analytics tasks according to an embodiment. A right column shows some actions of an analytics server relating to the analytics tasks according to an embodiment. This shows an example of a method of distributed management of analytics tasks in a programmable network having a controller (SDNC), a plurality of network nodes coupled to the controller by a Data Communications Network DCN, and a plurality of analytics servers each coupled to at least one of the network nodes. At the top of the left column there is a step by the controller of, for each of the analytics tasks to be distributed, selecting which of the analytics servers to use for that analytics task based on how data logged by respective ones of the network nodes and needed for that analytics task, can be routed to the analytics servers. This can be for example based on the shortest path, or least busy path or a combination of known routing criteria. Another step for the controller is sending to the selected analytics server, an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task, to enable the selected analytics server to carry out the analytics task. The results may be sent to any other part of the programmable network. If the results are sent to the controller, then there is a step by the controller of receiving from the selected analytics server over the DCN, the results of carrying out the analytics task. Another option is that results are sent to another analytics server as an input to another analytics task. The results may be used by an application, or by the controller or by a network node for example.

The figure also shows, in the central column, an example of a method by one of the network nodes of, for each of the analytics tasks to be distributed, receiving from the controller an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task, and selecting which of the analytics servers to use for that analytics task based on how the logged data needed for that analytics task can be routed to the analytics servers. The network node is also shown to send to the selected analytics server the indication of the analytics task, and the indication of what data logged by the network nodes is to be used, to enable the selected analytics server to carry out the analytics task.

The figure also shows, in the right column an example of a method by the analytics server of cooperating with the controller to enable the controller to select which analytics server to use for one of the analytics tasks on the basis of how data logged by the network nodes and needed for that analytics task can be routed to the analytics servers, and receiving an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task. The analytics server is also shown to receive the indicated logged data, carry out the analytics task on that received logged data, and send to another part of the programmable network over the DCN, results of carrying out the analytics task. This can encompass for example sending to the controller, or sending to a network node, or sending to another analytics server for use as an input to another analytics task. References to sending results can encompass sending direct results of the analytics task, or sending indirect results in the sense of results after further processing of the direct results. Such further processing could take place anywhere in principle, such as at the same analytics server, or at another analytics server for example. Reference to "cooperating with the controller to enable the controller to select which analytics server to use" can encompass any type of cooperation, including for example periodic updates from the server of availability, status, load, and so on, or advertising presence for auto discovery, and so on.

References to an analytics task here and elsewhere in this document are intended as encompassing any type of selective retrieval, and/or storing, with or without processing, of the data logged by the network nodes and corresponding output of raw or processed logged data. References to an analytics server are intended to encompass as any kind of processing hardware suitable for carrying out an analytics task. References to logged data, logged by the network nodes, are intended as encompassing at least data relating to characteristics of traffic carried by the node, such as FCAPS data and so on. References to "selecting which of the analytics servers to use" is intended to encompassing selecting one, or selecting a group of analytics servers, or making a partial selection by selecting a network node which is associated with or coupled, to a subset of multiple analytics servers, and delegating the final selection from that subset of servers to be made by that network node. References to DCN are intended as encompassing any way of communicating between the entities, either with the payload traffic or separately for example. References to a controller are intended to encompass an SDN controller or other types of controller for controlling nodes in other kinds of programmable network. A notable consequence of such distribution of the analytics tasks, compared to all being carried out in centralised fashion by the controller, is that the processing or communications loads on the SDNC and the DCN can be reduced or spread more evenly, or the analytics tasks can be scaled up with less risk of temporary overloading of the SDNC or the DCN. A notable consequence of selecting which analytics server or servers to use according to how the logged data can be routed, is that the load on the DCN can be managed and spread to avoid bottlenecks. This can also facilitate the scaling up of the analytics tasks. For cases where the DCN is shared with messages relating to network control, then there is an added benefit of reducing an impact of analytics tasks overloads, or scaling up, on such control messages. For a DCN complying to a particular protocol this may imply some expansion or alteration to the protocol to provide for it to communicate the tasks and corresponding results. Note these advantages can apply whether or not the embodiment includes the discovery feature, so embodiments may have or not have this feature. Nor are these advantages dependent on whether or not the results are returned via a node optionally used in the selecting process, so embodiments may have or not have this feature. Furthermore these advantages are not dependent on whether that node is used to feed the indicated data to the selected server, so again, embodiments may have or not have this feature.

A summary of steps in another example of the method is provided below (note some steps are optional and some can be carried out in a different sequence):

1 . The analytics servers are optionally discovered by the network nodes and the controller (or controllers in case of multiple domains);

2. Optionally, the capabilities of the analytics servers are advertised;

3. The controller indicates to the nodes which nodes send analytics data to which servers, optionally by sending default values for use if no specific values are sent for each task;

4. The controller is optionally able to modify such default values according to network status or analytics servers load to tell the nodes which server to deliver analytics to; 5. The tasks can use centralized or distributed processing options as follows:

a. The controller can collect the processed analytics results from the different servers when most suitable for network utilization and congestion.

b. The controller can collect the results in the form of raw data from the

Analytics Server and then do the processing (the analytics task is just collecting and storing at the Analytics server in this case, without processing)

c. The results can be sent elsewhere, to another analytics server or a network node for example.

6. The controller can make use of the analytics results data if it is the final user (e.g. for predictive traffic offloading) and/or makes the data available to the applications.

7. The analytics servers can periodically update their status and capacity (e.g. storage capacity).

Figs 2 to 4, embodiments having discovery.

Figure 2 shows another sequence chart similar to that of figure 1 . In this case, there is a preliminary step of carrying out an auto discovery of what analytics servers are available. This can be initiated either by the controller, or by a network node, or the analytics servers can advertise their presence and optionally send other characteristics. The analytics server can respond to an auto discovery initiated by the controller or network node. This can be easier to manage and scale up or down without needing to rely on manual input of what servers are available. It can also increase the resiliency of the network to faults or other changes affecting availability of the analytics servers.

This figure shows an example for the case that at least some of the analytics servers are within a routing domain of the controller and the auto discovery comprises receiving at the controller, indications from these analytics servers that they are available. This can have an advantage of more direct communication with the controller but more a cost of more complexity at the analytics server. The analytics server can respond to an auto discovery initiated by the controller or network node, by sending an indication of availability directly to the controller if within a routing domain of the controller. Otherwise it could rely on the network node to send an indication to the controller. In this case, where at least some of the analytics servers are not within a routing domain of the controller, the auto discovery comprises the controller receiving an indication from a network node that it has an associated analytics server available. This has an advantage of less complexity at the server but less direct communication with the controller. Further details of these two options of auto discovery are set out in relation to figures 1 1 and 12 below.

Fig 3, embodiments showing managing logged data

Figure 3 shows another sequence chart similar to that of figure 1 . In this case, the controller is shown to sending to at least one of the network nodes, an indication of what data logged by that network node is to be sent to which of the analytics servers. This can help reduce an amount of data sent via the controller, compared to a different example in which the logged data is sent to the controller and then routed to the analytics server, (in which case the network node may not need to know which analytics server needs which logged data). Sending this indication can help avoid the need for the network node to send the logged data via the controller, which can lead to the processing or communication loads on the controller or DCN being reduced or spread more evenly in time or space, enabling the analytics tasks to be scaled up with less risk of temporary overload of the controller or DCN. In some cases the indication can be a default or generic indication suitable for an initial or general usage which can be adapted if needed, either by the controller or the analytics server. This may help avoid the need to send specific indications for every task and thus help reduce an overall number of indications and thus help simplify the operation. The network node receives this indication of what logged data to send and to which of the analytics servers, and carries out this. Such indications may sent for each task, or default values may be sent for use when no specific instruction is sent for each task. This may help reduce the amount of instructions sent and thus help simplify the operation.

Fig 4, embodiments indicating amounts of spare capacity

Figure 4 shows another sequence chart similar to that of figure 1 . In this case, there is a step by the analytics server of sending an indication of amounts of spare capacity. This may be received and passed on by the network node. The controller receives these indication of amounts of spare capacity of the analytics servers. This can be a useful metric in managing the distribution of the tasks. Also shown is a step by the controller of sending to at least one of the network nodes an instruction to adapt what logged data is to be sent to which of the analytics servers, according to amounts of spare capacity of the analytics servers.

This can be a useful way of managing the distribution of the tasks more efficiently. Also shown is the step by the controller of sending instructions to the network node of what logged data to send and where to send it in the sense of which analytics server to send it to. The network node receives the instruction, logs its data and sends it to one or more analytics servers as instructed. This sending may be adapted as shown. The controller may send an instruction to the network node to adapt its sending of logged data. This adapting may be on the basis of the amounts of spare capacity, indicated by the analytics servers, or other metrics. The network node is shown as adapting its sending of the logged data as instructed. Also shown in this figure is the controller making its selection of which of the analytics servers to use based on current amounts of spare capacity of the analytics servers. This can help enable an even and efficient distribution of the tasks.

Fig 5, embodiments having indications with more details of logged data

Figure 5 shows another sequence chart similar to that of figure 1 . In this case, there is shown a step by the controller of sending indications of the analytics task to the analytics server in the form of information about for example what received logged data to store, and/or what received logged data to process, and/or when to send the results. The analytics server receives this information and uses it in in carrying out the analytics task. This can be useful to enable the analytics task to be carried out efficiently and to enable the results to be passed to the controller efficiently.

Fig 6, embodiments having unprocessed logged data

Figure 6 shows another sequence chart similar to that of figure 1 . In this case, there is shown an example in which the results of the analytics task comprises selected unprocessed logged data. These are sent to another part of the programmable network for further processing, for example by the controller, and at the controller there is shown the further step of carrying out processing of the unprocessed logged data. This can help make use of processing capacity at the controller if there is capacity, and if appropriate may make use of knowledge held at the controller about the network.

Fig 7, embodiments having request to adapt what logged data is sent

Figure 7 shows another sequence chart similar to that of figure 1 . In this case, after the analytics task has been started, there is shown a step by the analytics server of sending a request to adapt what logged data is sent to the analytics server. This request is shown as being received at the controller. The controller sends an instruction to the node or nodes to adapt what logged data is sent. The node receives this instruction and adapts what data is sent to the analytics server or servers. In some cases the controller could delegate this to the network node and arrange for the analytics server to communicate directly with the node, rather than going through the controller.

This feature can be beneficial in giving the analytics server some control over the data sent to it which enables adaptation to current conditions and thus help avoid overload or underuse of processing or communications resources. This can enable the rate of sending to be adapted, to match available capacity at the analytics server for example. Any other characteristic can be adapted, for example data compression, or data format, or routing of the data. If the logged data is not being received properly at the analytics server, this mechanism can be used to ask the controller to ask the node to retry, or to take other remedial action or ultimately, to try moving the task to another analytics server in case that helps. Fig 8, embodiments with delay in sending results

Figure 8 shows another sequence chart similar to that of figure 1 . In this case, there is shown a step by the analytics server of delaying the sending of the results to the another part of the programmable network, according to a current load on at least the DCN and/or the controller. This can help enable adaptation to current conditions, and can thus help avoid overload of processing or communications resources.

Figs 9, 10 network views

Figure 9 shows a schematic view of entities in a programmable network according to embodiments. The programmable network 100 has a controller 10, coupled to network nodes 20, of which four are shown, (network node A, network node B, network node C, network node D) there may be many more in a typical network. Links are shown between the network nodes for carrying payload traffic flows, as well as DCN traffic for control or signalling or analytics tasks for example. An analytics server A 30 is shown, coupled to network node B. A second analytics server B 30 is shown coupled to network nodes B and C. The controller can be an example of a controller for carrying out the steps shown in figures 1 to 8 for example. The network nodes can be examples of nodes for carrying out the steps shown in figures 1 to 8 for example. The analytics servers can be examples of analytics servers for carrying out the steps shown in figures 1 to 8 for example.

Figure 10 shows a similar view to that of figure 9 and corresponding reference signs are used as appropriate. In addition are shown flows of communications over the DCN, involved in the methods of distributed managing of analytics tasks. So the controller sends an indication of a task, to an analytics server B, selected for that task. This can be sent via network node B as shown by the dot- dot-dash arrow, or by other route. The logged data can be sent from network nodes C and D to the analytics server, as shown by dot-dash arrows. Then the results can be sent from the analytics server B to the controller as shown by the dash arrow, via network node B, or conceivably by another route.

Figs 1 1 , 12, network views with different routing domains

Figure 1 1 shows a similar view to that of figure 9 and corresponding reference signs are used as appropriate. In addition is shown an extent of a routing domain for the controller. In figure 1 1 this domain includes the analytics servers and in figure 12 the analytics servers are outside the domain, but coupled to network nodes within the domain. This has an effect on the communications over the DCN from the analytics servers, and in particular on the auto discovery process as will be explained in more detail below. Two different discovery methods will be described, which will be referred to as link layer discovery and routing. Both of them are equally feasible.

Routing discovery method: The routing method foresees the extension of the routing domains to the analytics servers, which are capable of advertising their capabilities (i.e. not data nodes with switching or routing capabilities but analytics nodes with analytics storage and/or analytics processing capabilities). The nodes, accordingly to this proposed method, will be preconfigured to send analytics data to the closest (in terms of TE metrics) analytics server or the SDN controller will instruct them individually on which server to deliver data to depending on administrative or traffic engineering constraints. Link layer discovery method:

This method is useful in two cases at least:

1 . When there is the willingness not to have a routing protocol running on the analytics server: in this case a simple lower layer discovery protocol is used between the analytics server and the node or nodes coupled to it (e.g. the analytics server B and network nodes C or D, or analytics server A and network node B). These nodes, referred to as the data forwarding nodes, can advertise in the routing instance the presence of an analytics server that they can reach with a given cost (TE metric).

2. When there is no routing protocol running in the network (e.g. a network which is run by a management protocol only like Netconf or by Open Flow). In this case the information regarding the presence and the capabilities of the analytics servers are gathered by the controller via these data forwarding nodes (i.e. nodes C or D for analytics server B). The analytics server can provide information on types of analytics it can perform, capability, and current load for example. This info is then used to instruct all the other nodes on how to deliver their analytics info.

Figs 13 to 18, schematic views of embodiments. Figure 13 shows a schematic view of a controller 10 for carrying out the operations shown in figures 1 to 8 for example. The controller has a processor 120 and a memory 130 for storing a program 125 having instructions for causing the processor to carry out the methods. Figure 14 shows a network node 20 for carrying out the operations shown in figures 1 to 8 for example. The network node has a processor 220 and a memory 230 for storing a program 225 having instructions for causing the processor to carry out the methods. Figure 15 shows an analytics server 30 for carrying out the operations shown in figures 1 to 8 for example. The analytics server has a processor 320 and a memory 330 for storing a program 325 having instructions for causing the processor to carry out the methods.

Figure 16 shows a schematic view of a controller 10 for carrying out the operations shown in figures 1 to 8 for example. The controller has a selector 140, for selecting which of the analytics servers to use for that analytics task based on how data logged by respective ones of the network nodes and needed for that analytics task, can be routed to the analytics servers, receiving from the selected analytics server over the DCN, results of carrying out the analytics task. The controller also has a sending unit 150, for sending to the selected analytics server, an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task, to enable the selected analytics server to carry out the analytics task. In some cases the controller may also have a receiver for receiving from the selected analytics server over the DCN, results of carrying out the analytics task. Figure 17 shows a network node 20 for carrying out the operations shown in figures 1 to 8 for example. The network node has a receiver 240 for receiving from the controller an indication of the analytics task and an indication of what data logged by the network nodes is to be used in the analytics task. The node also has a selector 250 for selecting which of the analytics servers to use for that analytics task based on how the logged data needed for that analytics task can be routed to the analytics servers. The node also has a sending unit 260 for sending to the selected analytics server the indication of the analytics task, and the indication of what data logged by the network nodes is to be used, to enable the selected analytics server to carry out the analytics task.

Figure 18 shows an analytics server 30 for carrying out the operations shown in figures 1 to 8 for example. The analytics server has a unit 340 for cooperating with the controller to enable the controller to select which analytics server to use for one of the analytics tasks on the basis of how data logged by the network nodes and needed for that analytics task can be routed to the analytics servers. The analytics server also has a receiver 350 for receiving indications of analytics tasks, and a receiver 360 for receiving the logged data. The analytics server also has an analytics unit 370, for carrying out the analytics task on that received logged data, and a sending unit 380 for sending to another part of the programmable network over the DCN, results of carrying out the analytics task.

Figure 19, schematic view of SDN example

Figure 19 shows a schematic view similar to that of figure 10, in which the programmable network is an SDN network 101 and the controller is an SDN controller 1 1 . This SDN controller has, following established practice, NBI agents 12, for interfacing with applications, and a CDPI driver 14 for interfacing with the network nodes to control the network. An SDN control logic part 13 is provided for controlling the network following established SDN protocols. These parts can also carry out the operations of the controller for distributed management of analytics tasks as described above in relation to figures 1 to 8 for example. Some ways of adapting the interface with the network nodes to enable these operations of the controller and network nodes will now be described in more detail.

Protocol adaptation for Interface between SDN controller and Network Nodes

The interface in this example can contain the following information:

1 . Data to be collected

2. Collection period 3. Sampling rate

4. Task to be performed

5. Destination of analytics server

An example of protocol to be used in this case is the PCEP protocol (Path Computation Element Protocol). The PCEP protocol is based on messages and TLVs and is commonly used to tell the nodes which MPLS labels to push to the IP packets for correct forwarding (in MPLS based segment routing) or which nodes to use for the establishment of Traffic Engineered paths (used in MPLS networks with traffic engineering). The PCEP protocol could be extended in 2 ways: either adding a new message to the set of existing ones, or adding a TLV (Type Length Value) to an existing message. Since most of the messages are used for path computation and path setup, a relatively clean solution would be to add a message. RFC 5440 defines the set of PCEP messages as follows:

6.1. Common Header

0 1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 6 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- +-+-+

I Ver I Flags ยท | Message -Type | Message -Length |

+-+-+-+ -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+-+-+-+-+-+-+-+

Figure 7; PCEP Message Common Header

Ver (Version - 3 bits): PCEP version number. Current version is

version 1.

Flags (5 bits) : No flags are currently defined. Unassigned bits are considered as reserved. They MUST be set to zero on transmission and MUST be ignored on receipt.

Message-Type (8 bits); The following Message types are currently

defined;

Value Meaning

1 Open

2 Keepalive

3 Path Com utation Request

4 Path Computation Reply

5 Notification

6 Error

7 Close

Message-Length (16 bits) : total length of the PCEP message including the common header, expressed in bytes. A possible option is to define Message Type =8 (analytics server) and use it to carry the information indicated above. The interface between Network Nodes and Application Server can be arranged to support two different modes: batch processing mode and real-time processing mode. In the batch processing mode, the nodes send all collected logged data in a batch and send to the analytics server at once. In the real-time processing mode, a connection is open during the data collection period and the nodes stream the logged data to the analytics server in real-time. Example Use Case of Transport SDN management and optimization tool.

In this scenario, an analytics task is provided for analyzing traffic loads with a goal of enabling improved balancing of the traffic loads through all network nodes by redistributing traffic to avoid congestion and improve network QoS. The SDN controller firstly instructs the network node to do a traffic prediction and send the prediction results to an analytics server selected for this load balancing analytics task. Upon receiving the task, each node monitors its own traffic and predicts the upcoming traffic for the next period based on the historical data. The analytics server receives the traffic predictions from all the nodes and makes a decision how the traffic should be distributed and sends the result to the SDN controller. Based on the result from the analytics server, the SDN controller updates the flow table in the nodes to re-steer the traffic in the network. Many other types of analytics tasks can be envisaged.

Concluding remarks

Examples have been described relating to distributed data processing of analytics tasks using analytics servers which may be dedicated or shared with other tasks. Examples have been described in which the analytics task distribution can be self-organized. Examples have been described with automated discovery of distributed analytics servers for processing and storage of logged data and results. Examples have been shown in which the transmission of the logged data and results relating to the analytics tasks can be routed to avoid bottlenecks and make optimal use of resources. These examples enable the analytics tasks to be managed efficiently and thus enable more scaling up to deal with large amounts of logged data and large number of nodes. Other variations can be envisaged within the claims.