System and method for migrating an agent server to an agent client device

Information

  • Patent Grant
  • 11546424
  • Patent Number
    11,546,424
  • Date Filed
    Monday, August 23, 2021
    2 years ago
  • Date Issued
    Tuesday, January 3, 2023
    a year ago
Abstract
In a network of mobile agents, data integrity can be improved by providing an agent server that can migrate between devices operating in the region of interest (ROI). The agent server distributes agent clients onto devices in the ROI and provides agent server services to the agent clients, including receiving and storing data from the agents. When the agent server device is to leave the ROI, the agent server can migrate to any device executing an agent client and continue to provide the agent server services, including data collection and aggregation, from the device to which the agent server has migrated.
Description
FIELD OF THE INVENTION

This disclosure relates to mobile agent networks and more particularly to managing data within the network.


BACKGROUND OF THE INVENTION

Agents running on mobile devices within a region of interest (ROI) can move or copy themselves to other devices that enter the ROI. Typically, each mobile device acts on its own without any central authority or role in the ROI. Content acquired between various agents can be fragmented and/or duplicated as agents move from mobile to mobile within the ROI.


What is required is a system and method that can establish a distributed client/server relationship between various Agents that persist within a ROI in order to manage the integrity of the data collected over time by agent activity.


SUMMARY OF THE INVENTION

In one aspect of the disclosure, there is provided a method for managing data integrity of one or more agent clients within a region of interest. The method comprises providing an agent server on a first device in the region of interest, storing data derived from at least one agent client with the agent server, and migrating the agent server and the stored data to a second device in the region of interest prior to the first device leaving the region of interest.


In one aspect of the disclosure, there is provided an agent server configured to provide at least one agent server service from a first device to at least one agent client on a second device in a region of interest, migrate from the first device to a third device, and provide the at least one agent server service from the third device to the at least one agent client on the second device.


In one aspect of the disclosure, there is provided a computer-readable medium comprising computer executable instructions for execution by a first processor of a first device, that, when executed, cause the first processor to receive an agent client from a second processor executing an agent server, execute the agent client, receive an instance of the agent server from the second processor, and execute the agent server instance.





BRIEF DESCRIPTION OF THE DRAWINGS

Reference will now be made, by way of example only, to specific embodiments and to the accompanying drawings in which:



FIG. 1 illustrates a network of agents including an agent server;



FIG. 2 illustrates a process for managing the network of agents;



FIG. 3 illustrates a message flow for distributing an agent client;



FIG. 4 illustrates a process flow for distributing an agent client;



FIG. 5 illustrates a message flow for migrating an agent server;



FIG. 6 illustrates a process flow for migrating an agent server;



FIG. 7 illustrates an interaction between processes of an agent client device and an agent server device; and



FIG. 8 illustrates an instruction set executable on the agent client device.





DETAILED DESCRIPTION OF THE INVENTION

Early incarnations of agent applications draw from conventional client/server models. Modern agent-based solutions are typically architected in a different manner from traditional client/server solutions found on traditional web-based application models. An agent requires the use of other capable devices that are willing to participate within the ROI in order to persist itself. If all agents autonomously collect information from their sensors and behave independently or in concert with other agents toward a goal while also potentially moving among devices in order to persist presence within the ROI, the information collected can become redundant and/or fragmented and introduce unnecessary complexity or noise in decision-making processes.


A system 10 in accordance with an embodiment of the disclosure is illustrated in FIG. 1. In the system 10, there may be any number of devices 12, 13 on which instances of a client agent (14, 17 respectively) are executed within a region of interest (ROI) 20. Typically, the devices 12, 13 will be mobile devices, such as cellular phones, personal digital assistants (PDA), netbooks, or laptops though in some cases, the devices 12 may be static devices. The devices 12, 13 include a location provider 15 that enable the devices 12, 13 to know their position. The location provider 15 may be capable of determining the device's location through any suitable means such as through GPS, cellular system, near field radio, digital/video camera, triangulation and the like.


There may be defined one agent that persists a centralized role and/or acts as a centralized server, termed an agent server 16 herein. The agent server 16 executes on a mobile device 18, which may be any device similar to the devices 12, 13. The agent server 16 can be configured to provide lifecycle management within the ROI 20 and also actively manage incoming requests from Agent Client/Proxy instances. The agent server 16 implements server-side behaviors and accepts requests for those behaviors from Agent Client/Proxy instances. For their part, the agent client/proxies 13, 17 may act as a simple proxy to the Agent Server 16 and/or can provide a programmatic interface to other applications executing on the client device (a service). The agents 14 use access to the client device's hardware and the Agent Server's ROI to accept/reject requests from other applications on the client device.


The agents 14 may communicate with the agent server through any suitable protocols and processes known to a person skilled in the art, such as (SOAP, XML, HTTP, HTTPS, etc) and it is not considered that further definition or description of these protocols and processes is required herein. Typically, an agent client 14, 17 will continually seek an agent server, such as by repeatedly submitting an agent participation request as will be described below, until it receives a response from an agent server. The agent server response may tell the client it has entered the boundaries of a ROI.


A process for managing the network of agents is shown in the flowchart 100 of FIG. 2. At step 101, an agent server is provided on a first device in the region of interest. Data derived from at least one agent client within the region of interest is received and stored with the agent server (step 102). When required, such as prior to the agent server device leaving the ROI, the agent server is migrated to a second device together with the stored data (step 103). Data stored by the agent server may be data directly received from agent clients or may be data that is derived through analysis and interpretation of agent client data.


The agent server initially provides agent server services to agent clients within the network from the first device. After migration, the agent server 16 is able to continue providing the agent services from the device to which it has migrated. The services provided by the agent server 16 to the agent clients 14, 17 will depend on the application and implementation of the agent client network. Examples of agent server services may include, without limitation, traffic congestion and traffic emergency management, fire emergency management and rescue management as well as many other location dependent or ROI dependent services.


As mentioned above, a function of the agent server 16 is to distribute client agents 14 across participant devices 12. Message flow for this task is illustrated in FIG. 3 and the corresponding process is shown in the flowchart 200 of FIG. 4. At commencement, it is assumed that the agent server 16 is running on Device1 18 and that an agent client bootstrap code 33 is running on Device2 12. The bootstrap code 33 includes a loop in which Device2 12 broadcasts an agent client participation request 41 from the device 12 (step 201) and awaits an agent client activation request in response (step 203). If no agent client activation request is received, then a timeout occurs (step 205), a failure is recorded 207 and the bootstrap code returns to step 201. Device2 may broadcast the participation request irrespective of whether it is in the ROI or not. The agent client participation request 41 specifies an ID of the device 12 and a location, as determined by the device's location provider.


The agent server 16 on Device1 18 also executes a loop in which the agent server 16 waits for agent client participation requests 202 until a timeout occurs 204. When Device2 enters the ROI, the participation request 41 is detected by the agent server 16 on Device1 18 (step 206) so that-no timeout occurs at step 204. The agent server 16 processes the broadcast participation request 41 and determines if Device2 is within the ROI (step 208). If Device2 is not within the ROT, then the agent server 16 ignores the participation request and returns to step 202. If Device2 is within the ROI, then the agent server 16 responds with an agent client activation request (step 210) indicating the agent client ID and ROI and including a serialized instance of the agent client. The agent server 16 then waits for an agent client activation response 212 and records a failure 216 if a timeout occurs 214.


If the agent client activation request 42 is received into Device2 before the timeout at step 205, then the bootstrap code 33 processes the agent client activation request (step 209) including deserializing and activating the agent client 14 (step 211). If the agent client cannot be successfully activated, then a failure is recorded 207 and the client bootstrap returns to step 201, thereby causing the timeout 214 in the agent server 16. If the agent client 14 is successfully activated in Device2 12 (step 213), then the agent client 14 generates and sends an agent client activation response 43 to the agent server 16 (step 215). The agent client activation response 43 indicates the agent client ID, the device ID of Device2 12 and a success or failure indicator. If the agent client activation response 43 is received in the agent server 16 before the timeout 214, then the agent server records the new agent client for the server 218, including recording a reference that associates the device ID with the agent client ID. The Agent Server uses the reference for future communication with other activated agents in the ROI.


Once the Agent Server has distributed the Agent Client, the Agent Server and Agent Client form part of a framework for any number of application-specific features. The standard operating interaction between the agent server and the agent client will thus depend on the application (or the goal of the Agent) in the region. The Agent Server defines the boundary and existence of the ROI and provides a data aggregator for all Agent Clients in the ROI. Thus, when an agent client leaves the ROI, the data accumulated by the agent client is retained in the agent server which collectively manages all the fragments of information from the various agent clients.


There will be times when it is necessary for the agent server 16 to migrate from its device 18 to another device 12 in order for the agent server 16 to persist within the ROI 20. Examples of when an agent server may need to migrate include an impending near-term hardware failure (power supply failure, decreased bandwidth, etc) or as a result in the user's change of command (e.g. when a fire chief enters the ROI for an emergency and needs to take charge). For example, with reference to FIG. 1, the agent server 16 may be executing on Device1 18 with instances of the agent client 13, 17 executing on Device2 12 and Device3 13 respectively, all of which reside in the ROI 20. FIG. 5 illustrates the message flow of one embodiment when the agent server 16 migrates to another device. A migration process is shown in the flowchart 300 of FIG. 6. At step 302, it is determined that the agent server 16 is to move from Device1 18. Candidate devices include any device currently hosting an agent client, since such devices all reside in the ROI, and a suitable device (e.g. Device2 13) is chosen at step 304. At step 306, the agent server 16 sends an agent server participation request 51 to the agent client 14 on Device2 12. The agent server participation request includes the device ID of Device2 12 and the agent ID currently running on Device2. The agent server 16 waits for a response at step 308 while the agent client 14 receives the agent server participation request 51 at step 301 and determines if the device hosting the agent client 14, i.e. Device2 12 is capable of hosting the agent server 16 (step 303). The agent client 14 sends an agent server participation response 52 indicating if Device2 can host the agent server (step 305) or not (step 307). The agent server participation response identifies the DeviceID of Device2 12, the agent ID of agent client 14 and a value indicating whether the agent client can receive the agent server. Possible values for this value may include YES, NO or NEVER.


If the agent client 14 indicates in the agent server participation response 52 that Device2 12 is capable of hosting the agent server 16, then the agent client 14 proceeds to wait for activity from the agent server 16 (step 309). If the agent server participation response 52 received by the agent server 16 indicates that the agent client 14 is unable to host the agent server (step 310), then a failure is recorded 312 and the agent server process returns to step 304 to search for a next possible candidate host. If the agent server participation response is deemed successful 310, then agent server 16 begins preparations to migrate, including rejecting new service requests and resolving outstanding requests 314. The agent server 16 then sends an agent server activation request 53 to the agent client (step 316), which includes a DeviceID of Device2, a serialized agent server and stored content of the agent server such as agent and device identities of other agents in the ROI, aggregated data collected from other agents, the ROI definition, etc. The agent server 16 then continues to reject further service requests while waiting for an activation response from the agent client 14 (step 318).


The agent client 14 processes the agent client activation request 53 (step 311) by deserializing and activating the agent server 50 on Device2 12 (step 313). An agent server activation response 54 is sent indicating whether the agent server was successfully activated (step 317) or not (step 319). If the agent server 16 receives a successful indication (step 320), then the agent server 16 is terminated on Device1 16 (step 322) or placed on standby. Otherwise, the agent server 16 resumes agent server processing 324 and returns to step 304 to seek another potential candidate device for hosting the agent server.


Once the agent server 50 is successfully activated on the new device, i.e. Device2 12, then the agent client 14 currently running on the device is terminated 321 and agent server reset messages 55 are sent to other agent clients on the network, such as agent client 17 running on Device3 13. The agent server reset messages indicate the old device ID and the new device ID, i.e. Device1 and Device2 respectively, as well as the agent ID of the new agent server 50. The agent server reset message thus causes the agent client 17 on Device3 13 to reference the new agent server 50 on Device2 12. Device3 can then continue receiving agent server services from the agent server, albeit from the new device (Device2).


Because the agent server can migrate with its collected data between devices, the agent server's movement does not necessarily have to impact the integrity of the agent data collected over time by other agents also within the ROI. Furthermore, since the agent clients communicate data to only a single agent server, redundant information between Agents within a ROI can be reduced or eliminated and the agent server can preserve information exclusive to one Agent within the ROI as the Agent leaves the ROI.


The components of the system 10 may be embodied in hardware, software, firmware or a combination of hardware, software and/or firmware. In a hardware embodiment, Device2 12 may include a processor 61 operatively associated with a memory 62 as shown in FIG. 7. The memory 62 may store an instruction set 400 executable by the processor 61 which may include the bootstrap code described above. When executed, the instruction set 400, shown in FIG. 8, causes the processor to receive an agent client from a processor 71 that is executing an agent server, such as a processor of Device1 18. The processor 61 may receive the agent client instance (step 401) from the processor 71 through any suitable communications link 65 of the network. Once received, the processor 61 executes the agent client (step 402). At some later time when the agent server migrates, the processor 61 may receive an instance of the agent server from the Device1 processor 71 (step 403) and execute the agent server instance (step 404). Receiving and executing the agent server instance may cause the Device2 processor 61 to terminate the agent client on the processor 61. The Device2 processor 61 may also notify a third processor (not shown) such as a processor of Device3 13 to cause the third processor to associate the agent server with Device2 so that Device2 is able to provide agent server services to an agent client on Device3.


Although embodiments of the present invention have been illustrated in the accompanied drawings and described in the foregoing description, it will be understood that the invention is not limited to the embodiments disclosed, but is capable of numerous rearrangements, modifications, and substitutions without departing from the spirit of the invention as set forth and defined by the following claims. For example, the capabilities of the invention can be performed fully and/or partially by one or more of the blocks, modules, processors or memories. Also, these capabilities may be performed in the current manner or in a distributed manner and on, or via, any device able to provide and/or receive information. Further, although depicted in a particular manner, various modules or blocks may be repositioned without departing from the scope of the current invention. Still further, although depicted in a particular manner, a greater or lesser number of modules and connections can be utilized with the present invention in order to accomplish the present invention, to provide additional known features to the present invention, and/or to make the present invention more efficient. Also, the information sent between various modules can be sent between the modules via at least one of a data network, the Internet, an Internet Protocol network, a wireless source, and a wired source and via plurality of protocols.

Claims
  • 1. An agent server device configured to collect measurements from different geographic locations within a Region Of Interest (ROI) and derive data based on content of the measurements, the agent server device comprising: a memory device configured to store instructions; anda processing device configured to execute the instructions stored in the memory device to: identify a candidate remote mobile device near a boundary of the ROI, wherein the candidate remote mobile device is configured to run an instance of a client agent distributed by the agent server device and that facilitates one or more sensors of the candidate remote mobile device to collect at least one of the measurements; andreceive data collected by the instance of the client agent using the one or more sensors of the candidate remote mobile device; andderive the data based at least in part on the received data.
  • 2. The agent server device of claim 1, wherein identifying the candidate remote mobile device near the boundary of the ROI comprises identifying a participation request repeatedly broadcast from the candidate remote mobile device irrespective of whether said candidate remote mobile device is within the ROI or not.
  • 3. The agent server device of claim 2, wherein the processing device is further configured to notify the candidate remote mobile device about an ingress of the candidate remote mobile device into the ROI by transmission of an agent client activation request to the candidate remote mobile device in response to a corresponding one of the participation requests.
  • 4. The agent server device of claim 3, wherein the processing device is further configured to record a reference corresponding to the candidate remote mobile device in response to receipt of an activation response to the agent client activation request, the activation response from the instance of the client agent distributed to the candidate remote mobile device.
  • 5. The agent server device of claim 3, wherein the agent client activation request includes the instance of the agent client.
  • 6. The agent server device of claim 2, wherein the processing device is further configured to record a reference that associates a device identifier of the candidate remote mobile device with an identifier present in the participation request.
  • 7. The agent server device of claim 2, wherein the processing device is further configured to ignore a participation request that corresponds to at least one candidate mobile device outside the boundary.
  • 8. The agent server device of claim 1, wherein the instance of the client agent comprises a serialized instance of the client agent.
  • 9. The agent server device of claim 1, wherein the agent server device comprises a mobile device.
  • 10. The agent server device of claim 1, wherein the agent server device comprises a static device.
  • 11. A method of collecting measurements from different geographic locations within a Region Of Interest (ROI) and deriving data based on content of the measurements, the method including: identifying, by a management device, a candidate remote mobile device near a boundary of the ROI, wherein the candidate remote mobile device is configured to run an instance of a client agent distributed by the management device and that facilitates one or more sensors of the candidate remote mobile device to collect at least one of the measurements; andreceiving data collected by the instance of the client agent using the one or more sensors of the candidate remote mobile device and deriving the data based at least in part on the received data.
  • 12. The method of claim 11, wherein identifying, by the management device, the candidate remote mobile device near the boundary of the ROI further comprises: identifying, by the management device a participation request repeatedly broadcast from the candidate remote mobile device irrespective of whether said candidate remote mobile device is within the ROI or not; andnotifying the candidate remote mobile device about an ingress of the candidate remote mobile device into the ROI by transmission of an agent client activation request from the management device to the candidate remote mobile device in response to the participation request.
  • 13. The method of claim 12, further comprising recording on the management device a reference corresponding to the candidate remote mobile device in response to receipt of an activation response to the agent client activation request, the activation response from the instance of the agent client distributed to the candidate remote mobile device.
  • 14. The method of claim 12, wherein the agent client activation request includes the instance of the agent client.
  • 15. The method of claim 12, further comprising recording on the management device a reference that associates a device identifier of the candidate remote mobile device with an identifier present in the participation request.
  • 16. The method of claim 11, wherein the management device comprises a mobile device.
  • 17. The method of claim 16, wherein a first hardware of the mobile device is equivalent with a second hardware of the candidate remote mobile device.
  • 18. The method of claim 16, wherein the management device comprises a static device.
RELATED APPLICATIONS

This application is a continuation of and claims priority to U.S. patent application Ser. No. 16/938,811 filed on Jul. 24, 2020, which is a continuation of and claims priority to U.S. patent application Ser. No. 16/216,126 filed on Dec. 11, 2018, now U.S. Pat. No. 10,728,325, which is a continuation of U.S. patent application Ser. No. 15/903,684, filed Feb. 23, 2018, now U.S. Pat. No. 10,154,088, which is a continuation of and claims priority to U.S. patent application Ser. No. 15/187,596, filed Jun. 20, 2016, now U.S. Pat. No. 9,948,712, which is a continuation of and claims priority to U.S. patent application Ser. No. 12/629,945, filed Dec. 3, 2009, now U.S. Pat. No. 9,372,728, each disclosure of which is incorporated by reference herein in its entirety.

US Referenced Citations (70)
Number Name Date Kind
6424988 Lurndal Jul 2002 B2
6601093 Peters Jul 2003 B1
6775673 Mahalingam et al. Aug 2004 B2
6892230 Gu et al. May 2005 B1
6909721 Ekberg et al. Jun 2005 B2
6950991 Bloomfield Sep 2005 B2
6970434 Mahany et al. Nov 2005 B1
6985750 Vicknair et al. Jan 2006 B1
7065541 Gupta et al. Jun 2006 B2
7082604 Schneiderman Jul 2006 B2
7089298 Nyman et al. Aug 2006 B2
7272636 Pabla Sep 2007 B2
7296068 Sarma et al. Nov 2007 B1
7318095 Husain et al. Jan 2008 B2
7395536 Verbeke Jul 2008 B2
7403996 Halpern Jul 2008 B2
7412224 Kotola et al. Aug 2008 B2
7434087 Singh Oct 2008 B1
7440416 Mahany et al. Oct 2008 B2
7480816 Mortazavi et al. Jan 2009 B1
7487230 Gu et al. Feb 2009 B2
7492777 Ekberg et al. Feb 2009 B2
7539481 Abhishek et al. May 2009 B2
7543174 van Rietschote et al. Jun 2009 B1
7555529 Bloomfield et al. Jun 2009 B2
7558846 Gu et al. Jul 2009 B2
7570627 Welborn et al. Aug 2009 B2
7602756 Gu et al. Oct 2009 B2
7613772 Bartram et al. Nov 2009 B2
7630944 Rupp Dec 2009 B2
7685279 Miltonberger Mar 2010 B2
7685288 Kakivaya et al. Mar 2010 B2
7801077 Rentel et al. Sep 2010 B2
7801082 Jeon et al. Sep 2010 B2
7804849 Mahany Sep 2010 B2
7904534 Lobbert Mar 2011 B2
7925772 Fujita Apr 2011 B2
7966368 Su Jun 2011 B2
7969911 Mahany Jun 2011 B2
8009658 Welborn Aug 2011 B2
8452895 Ito May 2013 B2
8601101 Singh Dec 2013 B1
8605596 Sim Dec 2013 B2
8615592 Kashyap Dec 2013 B2
8819199 Matuszewski Aug 2014 B2
8824449 Van Der Wateren Sep 2014 B2
9372728 Gerard Jun 2016 B2
9948712 Gerard Apr 2018 B2
10154088 Gerard Dec 2018 B2
10728325 Gerard Jul 2020 B2
11102293 Gerard Aug 2021 B2
20020044549 Johansson Apr 2002 A1
20020156875 Pabla Oct 2002 A1
20020169889 Yang Nov 2002 A1
20030233433 Halpern Dec 2003 A1
20040098447 Verbeke et al. May 2004 A1
20040139167 Edsall Jul 2004 A1
20060031429 Ayyagari Feb 2006 A1
20060176852 Wu Aug 2006 A1
20070233626 Rupp et al. Oct 2007 A1
20070245003 Kashyap Oct 2007 A1
20090037562 Lobbert Feb 2009 A1
20090049158 Krishnaswamy Feb 2009 A1
20090222537 Watkins Sep 2009 A1
20090238153 Sim Sep 2009 A1
20110137972 Gerard Jun 2011 A1
20110173305 Matuszewski Jul 2011 A1
20110208846 Ito Aug 2011 A1
20170099349 Gerard Apr 2017 A1
20180248944 Gerard Aug 2018 A1
Related Publications (1)
Number Date Country
20220046090 A1 Feb 2022 US
Continuations (5)
Number Date Country
Parent 16938811 Jul 2020 US
Child 17409547 US
Parent 16216126 Dec 2018 US
Child 16938811 US
Parent 15903684 Feb 2018 US
Child 16216126 US
Parent 15187596 Jun 2016 US
Child 15903684 US
Parent 12629945 Dec 2009 US
Child 15187596 US