Patent Publication Number: US-2023140594-A1

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

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This Application is a Continuation of application Ser. No. 17/409,547 filed on Aug. 23, 2021, which is a Continuation of application Ser. No. 16/938,811 filed on Jul. 24, 20220, which is a Continuation of application Ser. No. 16/216,126 filed on Dec. 11, 2018, which is a Continuation of application Ser. No. 15/903,684 filed on Feb. 23, 2018, which is a Continuation of application Ser. No. 15/187,596 filed on Jun. 20, 2016, which is a Continuation of application Ser. No. 12/629,945 filed on Dec. 3, 2009, which are hereby incorporated by reference in their entireties. 
    
    
     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&#39;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&#39;s hardware and the Agent Server&#39;s ROI to accept/reject requests from other applications on the client device. 
     The agents  14  may communicate with the agent server  16  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 Device 1   18  and that an agent client bootstrap code  33  is running on Device 2   12 . The bootstrap code  33  includes a loop in which Device 2   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 . Device 2  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&#39;s location provider. 
     The agent server  16  on Device 1   18  also executes a loop in which the agent server  16  waits for agent client participation requests  202  until a timeout occurs  204 . When Device 2  enters the ROI, the participation request  41  is detected by the agent server  16  on Device 1   18  {step  2 · 06 ) so that no timeout occurs at step  204 . The agent server  16  processes the broadcast participation request  41  and determines if Device 2  is within the ROI (step  208 ). If Device 2  is not within the ROI, then the agent server  16  ignores the participation request and returns to step  202 . If Device 2  is within the ROI, then the agent server  16  responds with an agent client activation request  42  (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 Device 2  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 Device 2   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 Device 2   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&#39;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 Device 1   18  with instances of the agent client  13 ,  17  executing on Device 2   12  and Device 3   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 Device 1   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. Device 2   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 Device 2   12 . The agent server participation request includes the device ID of Device 2   12  and the agent ID currently running on Device 2 . 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. Device 2   12  is capable of hosting the agent server  16  (step  303 ). The agent client  14  sends an agent server participation response  52  indicating if Device 2  can host the agent server (step  305 ) or not (step  307 ). The agent server participation response identifies the DeviceID of Device 2   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 Device 2   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  14  (step  316 ), which includes a DeviceID of Device 2 , 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 Device 2   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 Device 1   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. Device 2   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 Device 3   13 . The agent server reset messages indicate the old device ID and the new device ID, i.e. Device 1  and Device 2  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 Device 3   13  to reference the new agent server  50  on Device 2   12 . Device 3  can then continue receiving agent server services from the agent server, albeit from the new device (Device 2 ). 
     Because the agent server can migrate with its collected data between devices, the agent server&#39;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, Device 2   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 Device 1   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 Device 1  processor  71  (step  403 ) and execute the agent server instance (step  404 ). Receiving and executing the agent server instance may cause the Device 2  processor  61  to terminate the agent client on the processor  61 . The Device 2  processor  61  may also notify a third processor (not shown) such as a processor of Device 3   13  to cause the third processor to associate the agent server with Device 2  so that Device 2  is able to provide agent server services to an agent client on Device 3 . 
     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.