A System, a Node, a Method in a Communication Network and a Computer Program and Corresponding Computer Program Product
20180241814 · 2018-08-23
Inventors
Cpc classification
H04L67/34
ELECTRICITY
H04L67/51
ELECTRICITY
H04L67/1072
ELECTRICITY
International classification
Abstract
An object of the present invention is to develop scalable and decentralized cloud platforms. That is achieved by introducing geographical process look-up. In this specification, geographical process lookup implies finding a running software process running a runtime environment associated with a geographical location. This process can also be used to find a runtime environment to deploy a new (software) process. According to embodiments of the present invention geographical process lookup is accomplished by combining geohash and Kademlia's ability to find nodes that are close to each other and by introducing special software agents so called process runtime agents, which are responsible for managing (e.g. deploying/starting) software processes. Geographical process lookup is then achieved according to embodiments by storing references to the process runtime agents in the DHT as key-values, with the key being the agent's geohash string generated from their geographic latitude and longitude coordinates, and the value being other information e.g. how to connect to the agent.
Claims
1-20. (canceled)
21. A method performed in a communication network, wherein a process P is running on a first node associated with a first process runtime agent in a first geographical location, and wherein the first geographical location is identified by a geohash string, the method comprising: receiving, by a second node associated with a second process runtime agent, a request for information of at least one process runtime agent geographically close to the first geographical location; enabling, by the second node, representation of process runtime agents and their respective geohash string in a distributed hash table (DHT), wherein the geohash string is indicative of a coordinate pair of latitude and longitude of the process runtime agent and the length of the string depends on the precision of the coordinate pair, and wherein the DHT is distributed over multiple geographical locations associated with a respective process runtime agent; and initiating, by the second node, a search for process runtime agents in geographical grids surrounding the first geographical location, using the DHT and the geohash strings, to identify a process runtime agent that is geographically close to the first geographical location.
22. The method of claim 21, wherein a key/value pair of the DHT comprises the geohash string representing the geographical location of the process runtime agent as the key and identity information of the process runtime agent as the value of the DHT.
23. The method of claim 21, wherein a process runtime agent is identified that is geographically closest to the first geographical location.
24. The method of claim 21, wherein the identified process runtime agent is stored in a selection array.
25. The method of claim 24, wherein process runtime agents stored in the selection array are compared with each other to find the process runtime agent closest to the first geographical location.
26. The method of claim 24, wherein process runtime agents stored in the selection array are subjected to a filtering.
27. The method of claim 21, wherein the geographical grids surrounding the first geographical location are iteratively extended by starting in the center, and for each iteration recursively checking a next layer on the outskirts of the area of the previous geographical grids.
28. The method of claim 21, wherein the geographical grids surrounding the first geographical location are iteratively extended in a spiral formed pattern.
29. A second node, associated with a second process runtime agent, of a communication network, wherein a process P is running on a first node associated with a first process runtime agent in a first geographical location, and wherein the first geographical location is identified by a geohash string, the second node comprising: processing circuitry; memory containing instructions executable by the processing circuitry whereby the second node is operative to: receive a request of information of at least one process runtime agent geographically close to the first geographical location; enable representation of process runtime agents and their respective geohash string in a distributed hash table (DHT), wherein the geohash string is indicative of a coordinate pair of latitude and longitude of the process runtime agent and the length of the string depends on the precision of the coordinate pair, and wherein the DHT is distributed over multiple geographical locations associated with a respective process runtime agent; and initiate a search for process runtime agents in geographical grids surrounding the first geographical location, using the DHT and the geohash strings, to identify a process runtime agent that is geographically close to the first geographical location.
30. The second node of claim 29, wherein a key/value pair of the DHT comprises the geohash string representing the geographical location of the process runtime agent as the key and identity information of the process runtime agent as the value of the DHT.
31. The second node of claim 29, wherein the instructions are such that the second node is operative to identify a process runtime agent that is geographically closest to the first geographical location.
32. The second node of claim 29, wherein the instructions are such that the second node is operative to store the identified process runtime agent in a selection array.
33. The second node of claim 32, wherein the instructions are such that the second node is operative to compare process runtime agents stored in the selection array with each other to find the process runtime agent closest to the first geographical location.
34. The second node of claim 32, wherein the instructions are such that the second node is operative to filter process runtime agents stored in the selection array.
35. The second node of claim 29, wherein the instructions are such that the second node is operative to: iteratively extend the geographical grids surrounding the first geographical location by starting in the center; and for each iteration, recursively check a next layer on the outskirts of the area of the previous geographical grids.
36. The second node of claim 29, wherein the instructions are such that the second node is operative to iteratively extend the geographical grids surrounding the first geographical location in a spiral formed pattern.
37. A communication network: a first node associated with a first process runtime agent, wherein a process P is running on the first node in a first geographical location and wherein the first geographical location is identified by a geohash string; a second node associated with a second process runtime agent; wherein the first node comprises: first processing circuitry; first memory containing instructions executable by the first processing circuitry whereby the first node is operative to send a request for information of at least one process runtime agent geographically close to the first geographical location; wherein the second node comprises second processing circuitry; second memory containing instructions executable by the second processing circuitry whereby the second node is operative to: receive a request of information for at least one process runtime agent geographically close to the first geographical location; enable representation of process runtime agents and their respective geohash string in a distributed hash table (DHT), wherein the geohash string is indicative of a coordinate pair of latitude and longitude of the process runtime agent and the length of the string depends on the precision of the coordinate pair, and wherein the DHT is distributed over multiple geographical locations associated with a respective process runtime agent; and initiate a search for process runtime agents in geographical grids surrounding the first geographical location, using the DHT and the geohash strings, to identify a process runtime agent that is geographically close to the first geographical location.
38. A non-transitory computer readable recording medium storing a computer program product for identifying a process runtime agent that is geographically close to a first geographical location, wherein a process P is running on a first node associated with a first process runtime agent in the first geographical location, and wherein the first geographical location is identified by a geohash string, the computer program product comprising software instructions which, when run on processing circuitry of a second node associated with a second process runtime agent, of a communication network, causes the second node to: receive a request of information of at least one process runtime agent geographically close to the first geographical location; enable representation of process runtime agents and their respective geohash string in a distributed hash table (DHT), wherein the geohash string is indicative of a coordinate pair of latitude and longitude of the process runtime agent and the length of the string depends on the precision of the coordinate pair, and wherein the DHT is distributed over multiple geographical locations associated with a respective process runtime agent; and initiate a search for process runtime agents in geographical grids surrounding the first geographical location, using the DHT and the geohash strings, to identify a process runtime agent that is geographically close to the first geographical location.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
[0041]
[0042]
[0043]
[0044]
[0045]
DETAILED DESCRIPTION
[0046] According to the embodiments of the present invention, an agent is introduced, referred to as process runtime agent, which represents a process runtime environment. Examples of runtime environment are Docker engine described in http://www.linux.com/news/enterprise/cloud-computing/731454-docker-a-shipping-container-for-linux-code and Mesos described in http://mesos.berkeley.edu/mesos_tech_report.pdf. The agent is configured to publish the underlying process runtime environment's geographical position in a DHT. The process runtime agent can be described as an agent configured to be a part of the DHT and to provide information on how to connect to the process runtime environment for the application that was searched for or is going to be used to run the specific application.
[0047] In the prior art solutions it is only possible to lookup specific keys in a DHT and generally not possible for search for information, whereas the essence of the proposed solution is to represent geographical locations grids as keys in the DHT and use that structure to iterate and search for process runtime agents in surrounding grids, thus providing a search function albeit limited to the geographical location.
[0048]
[0049] Meta data, such as IP-address, geographic location (latitude, longitude), MAC address, port information, about process runtime agents are stored in the DHT with the key being a geohash string and the value a set of meta data of process runtime agents registered at the geographical location indicated by the geohash string. This makes it possible to search for agents by looking up the geometa data in the DHT and use an expand search algorithm to find geographical nearby agents. The solution is thus distributed and decentralized as well as scalable system (assuming a large geographical area is not searched), where the DHT can be used for registering, and finding the nearest process runtime agents. According to embodiments of the present invention different expand search functions can be used.
[0050] Accordingly, a method performed in a communication network, wherein a process P is running on a first node associated with a first process runtime agent in a first geographical location is provided as illustrated in
[0051] According to one embodiment, a key/value pair of the DHT comprises the geohash string representing the geographical location of the process runtime agent as the key and identity meta information (e.g. IP-number or other connection related information) of the process runtime agent as the value of the DHT.
[0052] The following two examples illustrate in more detail the role of the process runtime agent and how it is used to perform geographical process lookup.
[0053] One example could be to find video conference equipment (e.g. monitor, projector, drawing, connected drawing boards etc.) at a specific location to set up a video conference meeting. In this case, video conference equipment runs a software process that is connected to a process runtime agent. The software process could for example connect a video stream to a monitor/computer.
[0054] Typically, when the conference equipment is started it determines it geographical location (e.g. using an indoor location system) and then locates the closest process runtime agent responsible for the geographical area that includes the determined geographical location. The process runtime agent could run directly on the conference equipment, but it could also run remotely in a datacenter somewhere. In both cases, the process runtime agent is associated with a specific geographical location.
[0055] When a user enters the conference room, it can thus use the proposed geo process lookup scheme to connect to process runtime agent responsible for the conference equipment.
[0056] Another example could be an intelligent transport system where the embodiments are used to implement an early-warning collision detection mechanism. When a GPS in a car recognizes that the car is approaching a pedestrian crossing, the transport system can use the GPS to obtain the coordinates for the crossing, which could be used to do a lookup for a process runtime agent at that location for a pedestrian sensor, thus warn the driver about the existence of potential risks. This could also be combined with automatic security systems in the car making the car slow down to avoid accidents. In this example, the process runtime agent could for example be embedded in a lamp post with sensors to detect nearby pedestrians. Note that software process running in the lamp post could run remotely in a datacenter, but still be associated with a geographical position of the pedestrian or the lamp post.
[0057] An example is described in conjunction with
[0058] Typically, processes or containers are tagged with a geohash and deployed to any available process runtime agent found in the DHT within the same geohash. A process runtime agent receives the request and then uses the proposed search algorithm to more find a more suitable process runtime agent(s) registered in the DHT network (if it is not the closest already), and then dispatch the process/container to that process runtime agent. Alternatively, an external client can be used to search the DHT and then deploy the container directly to the selected process runtime agent found by the client. An external client could be a Graphical User Interface (GUI) and could be a client program on an OS (Operating System) that gives the possibility to choose where you want to deploy a certain application.
[0059] The pre requisites are: Each process runtime agent A publishes its geo meta data in a DHT, i.e. dht.set(geodata.sup.A, config), where the config contains meta information how to connect (e.g. IP address) to that process runtime agent. The key, geodata.sup.A, is a geohash string representing the geogrid the process runtime agent A belongs to. The geohash string of the geodata key can be pruned to a specific length corresponding to the desired precision specified by the system. The exact geohash location is saved in the config value to be able to do secondary selections, e.g. filter on process types.
[0060] Let P.sup.Pos be the geohash position of a specific process, P, and A.sup.Pos the geohash position of a specific process runtime agent, A, then D is the distance between P.sup.Pos and A.sup.Pos.
[0061] The process requests a process runtime agent (any process runtime agent can be selected) to return the process runtime agent, A, that is closest to P. [0062] 1. Find a process runtime agent within the geohash grid of P, referred to as grid layer 0, i.e. P.sup.Pos, i.e. where the user wants to run the process. A=dht.get(P.sup.Pos), where P.sup.Pos is the calculated geohash grid. [0063] 2. If A is valid i.e. if a process runtime agent is found in the DHT within the geohash grid of P, return A. [0064] 3. If A is not valid, i.e. if a process runtime agent is not found in the DHT within the geohash grid of P, select the next grid layer (grid layer=grid layer+1), by using an expand search described below. [0065] 4. The expand search is used to find an array of geohash blocks, B in the current grid layer (e.g. grid layer 1). [0066] a. For each block, i, in B, look for possible process runtime agents As, i.e. A=dht.get(B[i]). [0067] i. If A is valid, then store A in a selection array, S. [0068] b. In S find and return the closest Process Runtime Agent where the distance, D, between in P.sup.Pos and S[i] is shortest, alternatively return the whole selection array for a secondary filtering taking into account processing load, network latency, memory, machine types, service type (e.g. different type of equipment such as kitchen equipment for IoT devices.). [0069] 5. If no A is found, go to the next grid layer (grid layer++), and go to Step 4 to search in an increased geographical area.
[0070]
[0071] Typically, process runtime agents are unlikely to be found directly in grid layer 0 (Step 1), which means that the search area for a process runtime agents need to be extended, i.e. the grid layer needs to be increased, and Step 4 in the aforementioned algorithm needs to be repeated. This procedure to extend the search area is referred to as an expand search and allows an extended geographical area to be scanned for process runtime agents A. Possible process runtime agent candidates may be stored in a selection array, or information associated with the process runtime agent candidates. The selection array is associated with the search algorithm described above.
[0072] The process runtime agents, or information thereof, in the selection array, S, can then be compared with each other to find the process runtime agent that is close or closest to the process P (Step 4b). Alternatively an ordered list of the multiple process runtime agents found in the selection array can be returned.
[0073] This could be useful for performing a secondary selection on the process runtime agents stored in the selection array, implying that the process runtime agents stored in the selection array could be subjected to a filtering. For example, finding the process runtime agent that is least loaded (e.g. have least CPU load), or other kinds of attributes as mentioned above.
[0074] Note that the proposed solution works both on a virtual and physical infrastructure, that is, search for references to process runtime agents running in a datacenter, or search for references to process runtime agents running on a physical infrastructure or end-users/IoT devices.
[0075] The search area for searching for the process runtime agents can be extended in different ways. According to one embodiment a method referred to as LayerExpand is used.
[0076] LayerExpand is a search approach that could be explained as rings on the water. The geographical grids surrounding the first geographical location is iteratively extended by starting in the center 701 and for each step recursively check a next layer 702,703 on the outskirts of the area of the previous geographical grids as illustrated by the picture
[0077] This method returns the values in an ordered matter where the first value is the initial geohash that was provided followed by the values at index 1-8 702 being the first layer and 9-24 703 being the second layer and so on. In this example index 0 being the center, while index 1-8 indicates the first layer and index 9-24 indicates the second layer. This makes implementing a Find N function quite simple, which basically is looking if the geogrids contains any process runtime agents (until N process runtime agents are found) and saving them in a list while doing the LayerExpand as illustrated in
[0078] It should be mentioned that some agents which are closer can be missed because when N agents are found the method will terminate and return the list of agents but the agents missed will not be closer than around 20 km (geohash precision 4) compared to the other agents found in that layer. The reasoning around this was to be able to instantly return when N agents were found which would minimize the lookup calls to the DHT. This could be modified to always return all the values in the layer that hit N values, which would mean that all the closest values would always be returned.
[0079] According to a further embodiment, referred to as SpiralBoxExpand, the geographical grids surrounding the first geographical location are iteratively extended in a spiral formed pattern. Hence, SpiralBoxExpand is a search method, which involves checking in an expanding spiral pattern around the center, this implementation is a counter-clockwise spiral and
[0080] This method gives a minimal amount of calls to the DHT lookup function in order to find N process runtime agents since as soon as it finds N agents the function will terminate. SpiralBoxExpand has the same problem which was pointed out with the LayerExpand where it can exit before a full layer have been searched resulting in that some process runtime agents will be missed which could be up to 20 km closer. This is due to the same reasoning as for the LayerExpand function.
[0081] Compared to the LayerExpand method, SpiralBoxExpand does not require a list of already visited grids to be maintained because it will never visit the same geohash grid twice, this makes it use less memory runtime compared to LayerExpand but it also avoids doing unnecessarily geohash fetches that would have been discarded because they already have been searched like in the other solution. As in LayerExpand this can also be modified to ensure always giving the closest process runtime agent by making sure that the entire layers always will be searched.
[0082] This is a comparison of SpiralBoxExpand and the LayerExpand functions in how they perform when it comes to how much they tax the DHT system over different distances and how they do their internal lookups in order to find the geogrid blocks that is searched for Process Runtime Agent meta data to use in the DHT lookup.
[0083] This can be seen in SpiralBoxExpand vs LayerExpand DHT calls comparison graph
[0084] Accordingly, the embodiments describe an iterative search algorithm and a description how to implement the embodiments in different ways to expand searches around the area of a node running a process to locate process runtime agents close to the node by, either deploying a new process or find an existing one.
[0085] As mentioned before, the embodiments of the present invention have many applications. For example, they can be used to deploy a video conference server or other time-critical real time systems (running in containers) geographically close to the end-users.
[0086] Another use case is Augmented Reality (AR), where an application needs to be responsive and give information about an object a user is looking at. This could be done by letting a building or an object that the user wants to get augmented reality information about have the information stored in their own process runtime agent, wherein the process runtime agent can be found by a user device (in this case the user device is the node on which the process is running), e.g. a phone or AR device, by looking for process runtime agents within a certain radius around the user to give extra information about the surroundings this might even make the user notice something they otherwise would have missed. Additionally, in an IoT (Internet of Things) use cases such as an intelligent transport system, a connected car could ask a crosswalk IoT device (e.g. a lamppost) for possible hazards, e.g. ask if there is any pedestrians close by, the crosswalk IoT device responds to the driver who has access to an advance warning system that can take appropriate actions to the situation.
[0087] As mentioned above, an example of an IoT device could be a lamppost. As an example, the node running the process is located in the car and the closest process runtime agent in a lamppost is found by using embodiments of the invention. The process runtime agent could run a software container and thus provide information about pedestrians via connected sensors. The process runtime agent of the lamppost could either run a process locally on container running on an embedded computer, or the process runtime agent of the lamppost could run in a datacenter somewhere. As more devices and services becomes connected, the lines between physical and virtual will be become more blurred, at a point where one could view physical objects such as a car or a building as a complex system of interconnected processes forming a sphere of geo-process taking place in a meta world, layered on top of our real world.
[0088] Different cases of the embodiments are further described in conjunction with
[0089] In
[0090] As in
[0091] With reference to
[0092] The first node 1040 comprises a processor 1310 and a memory 1320 storing instructions 1330 that, when executed by the processor, causes the first node 1040 to send a request 1300 of information of at least one process runtime agent geographically close to the first geographical location.
[0093] A second node 1010, is associated with a second process runtime agent 1020 of a communication network 1000. Further, a process P 1030 is running on a first node 1040 associated with a first process runtime agent 1050 in a first geographical location 1060. The first geographical location 1060 is identified by a geohash string and the second node 1010 comprises a processor 1210 and a memory 1220 storing instructions 1230 that, when executed by the processor 1210, causes the second node 1010 to receive a request 1300 of information of at least one process runtime agent geographically close to the first geographical location, and enable representation of process runtime agents and their respective geohash 1245 string in a DHT 1240 wherein the geohash string 1245 is indicative of a coordinate pair of latitude and longitude of the process runtime agent and the length of the string depends on the precision of the coordinate pair. The DHT is distributed over multiple geographical locations associated with a respective process runtime agent.
[0094] The stored instructions 1230 that, when executed by the processor 1210, further causes the second node 1010 to initiate a search for process runtime agents in geographical grids surrounding the first geographical location 1060, using the DHT and the geohash strings, to identify a process runtime agent that is geographically close to the first geographical location 1060.
[0095] According to an embodiment a key/value pair of the DHT comprises the geohash string 1245 representing the geographical location of the process runtime agent as the key and identity information 1246 of the process runtime agent as the value of the DHT.
[0096] Furthermore, the instructions to cause comprise instructions that, when executed by the processor, may cause the second node to identify a process runtime agent that is geographically closest to the first geographical location.
[0097] According to another embodiment, the instructions to cause comprise instructions that, when executed by the processor, may cause the second node to store the identified process runtime agent in a selection array.
[0098] The instructions to cause comprise instructions that, when executed by the processor, may also cause the second node to compare process runtime agents stored in the selection array with each other to find the process runtime agent closest to the first geographical location.
[0099] Moreover, the instructions to cause comprise instructions that, when executed by the processor, may cause the second node to filter process runtime agents stored in the selection array.
[0100] According to embodiments of the present invention, the instructions to cause comprise instructions that, when executed by the processor, may cause the second node to iteratively extend the geographical grids surrounding the first geographical location by starting in the center and for each step recursively check a next layer on the outskirts of the area of the previous geographical grids or to iteratively extend the geographical grids surrounding the first geographical location in a spiral formed pattern.
[0101] The first node and the second node may comprise input/output unit, respectively for sending and receiving the request 1300.
[0102] Turning now to
[0106] The computer program product 90 may comprise a computer program according to the description above and a computer readable means on which the computer program is stored.
[0107] According to a yet further aspect of embodiments of the present invention an implementation of the second node 1010 is schematically illustrated in
[0108] Means for receiving (1510) a request of information of at least one process runtime agent geographically close to the first geographical location,
[0109] Means for enabling (1520) representation of process runtime agents and their respective geohash string in a distributed hash table, DHT, (1240) wherein the geohash string (1245) is indicative of a coordinate pair of latitude and longitude of the process runtime agent and the length of the string depends on the precision of the coordinate pair, and wherein the DHT is distributed over multiple geographical locations associated with a respective process runtime agent, and
[0110] Means for initiating (1530) a search for process runtime agents in geographical grids surrounding the first geographical location (1060), using the DHT and the geohash strings, to identify a process runtime agent that is geographically close to the first geographical location (1060).
[0111] According to an embodiment a key/value pair of the DHT comprises the geohash string 1245;1270 representing the geographical location of the process runtime agent as the key and identity information 1246;1248 of the process runtime agent as the value of the DHT.