Remote execution of data analysis using virtual desktop
By setting up a virtual desktop VM on the transportation, remote users are allowed to remotely analyze the data on the transportation, solving the problem of data analysis delay in existing technology, and achieve the effect of real -time response and data security.
Patent Information
- Application Number
- CN202411003759.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-07-08
- Filing Date
- 2024-07-25
- Publication Date
- 2025-01-28
AI Technical Summary
In the prior art, commercial vehicles cannot analyze remotely in real time after collecting data, resulting in a prolonged response time and affecting the processing efficiency of emergency situations.
By setting up a virtual desktop virtual machine (VM) on the transportation, remote users are allowed to use virtual desktop VM and data to collect VM on the network remotely to achieve remote analysis of data without needing data to remote positions.
Real -time remote analysis of data on the transportation of transportation, reducing data transmission delay, improving the response efficiency of emergency situations, and reducing the risk of data loss.
Smart Images

Figure CN119383232A_ABST
Abstract
Description
[0001] Related Applications Cross Reference
[0002] This application claims the benefit of U.S. Provisional Application No. 63 / 528,699, filed on July 25, 2023, and entitled “REMOTELY PERFORMING DATA ANALYSIS USING A VIRTUAL DESKTOP,” the entire teachings of which are hereby incorporated by reference in their entirety for all purposes. Technical Field
[0003] The present disclosure relates to remotely performing data analysis using a virtual desktop. Background Art
[0004] Commercial vehicles, such as first responder vehicles and police vehicles, are being transformed into mobile micro data centers where hypervisor platforms merge multiple applications and perform real-time data collection and analysis operations to speed up response times to crime (and other types of emergencies, such as medical emergencies). With the help of software-defined wide area network (SD-WAN) technology, multi-carrier connections can be established in vehicles, which greatly expands the reliability of wireless data connections while also expanding the available bandwidth available for application services. However, current cellular data connections are still insufficient to perform the transmission of large amounts of data from one location (e.g., the vehicle) to another location (e.g., the cloud or a remote data center) in a timely manner. Because of this, the various forms of large amounts of data collected at the vehicle cannot be immediately observed by others outside the vehicle. This delays analysis (1) until the vehicle stops at a station, or (2) until the slow transmission of the large amount of data to the remote location is complete.
[0005] For example, images of a crime victim's phone captured after the crime has been reported are often taken as evidence and stored for months until the process of imaging the phone and transmitting its data to the appropriate police location has been completed. This problem has led to a significant reduction in the incidence of victims reporting such crimes to the police, as the victims fear losing evidence due to this slow and inefficient process. Therefore, there is a need for methods and systems for collecting data at a specific location and processing this data remotely and immediately. Summary of the invention
[0006] Some embodiments provide a novel method for analyzing data collected by a vehicle at a first location. On a first device operating in a vehicle, the method instantiates a virtual desktop first virtual machine (VM) for remote use of the first device by a remote user using a remote second device at a remote second location. The method instantiates a data collection second VM for local use of the first device to collect a set of data at the first location and store the set of data at the vehicle. The method facilitates interaction between the virtual desktop first VM and the remote user via a network so that the remote user accesses the data collection second VM to analyze the set of data without forwarding the set of data to the remote second device via a network.
[0007] In some embodiments, the method is performed by a management program of the first device. In some embodiments, the management program also configures a micro-broker module within the virtual desktop VM to authenticate the remote user and facilitate interaction between the virtual desktop VM and the remote user. By authenticating the remote user, the micro-broker module helps prevent unauthorized users from accessing the first device or data stored at the vehicle. In some embodiments, the micro-broker module authenticates a set of user authentication credentials (e.g., username and password) associated with the remote user. In combination or alternatively, the micro-broker module authenticates a set of device authentication credentials (e.g., media access control (MAC) address and / or Internet Protocol (IP) address) associated with the remote second device. The micro-broker module of some embodiments stores a table containing records of authorized remote users and their usernames and passwords and records of authorized remote devices and their MAC and IP addresses.
[0008] Instead of configuring a micro-agent module in a virtual desktop VM, other embodiments configure a connection proxy module on the first device to authenticate a remote user and facilitate interaction between the virtual desktop VM and the remote user. In such embodiments, the connection proxy module can authenticate a remote user to access multiple virtual desktop VMs instantiated on the first device.
[0009] In some embodiments, the hypervisor configures the micro-agent module with a set of rules that guide which resources on the first device the remote user is allowed to access. In such embodiments, different remote users are allowed to access different resources of the first device (e.g., VMs, applications, stored data). In some of these embodiments, the resources on the first device that the remote user is authorized to access include a set of one or more data collection and analysis VMs. By accessing the set of data collection and analysis VMs, the remote user can remotely perform data analysis on the data collected and stored at the vehicle without forwarding the data to a remote second device.
[0010] In some embodiments, the data stored at the vehicle is stored on the first device, such as on a local data storage device of the first device. In other embodiments, the data is stored on a specific storage device connected to the first device. In such embodiments, the specific storage device is a secure solid-state drive (SSD) that helps the hypervisor maintain secure storage of the data.
[0011] In some embodiments, the hypervisor configures a synchronization agent on the virtual desktop VM to copy the data stored on the secure SSD to the remote data storage device. This ensures that in the event of data loss on the secure SSD, the data can still be retrieved from the remote data storage device. In some embodiments, the remote data storage device is a cloud data storage device at a cloud location. In other embodiments, the remote data storage device is a data center data storage device at a remote data center location.
[0012] In some embodiments, the hypervisor detects potential unauthorized access to the secure SSD. In some embodiments, this is due to an unauthorized remote user accessing a first device. In such embodiments, the remote user is a first remote user, and the hypervisor detects unauthorized access to a virtual desktop VM by a second remote user using a remote third device. After detecting the potential unauthorized access to the secure SSD, the hypervisor deletes the data stored on the secure SSD, but because the data has been copied to the remote data storage device by the synchronization agent, the data can still be retrieved by the authorized remote user.
[0013] In some embodiments, the network utilized by the virtual desktop VM to communicate with the remote user is a software defined wide area network (SD-WAN). In such embodiments, the remote user interacts with the virtual desktop VM using a set of one or more wireless network links associated with an edge router in a vehicle that connects the vehicle to the SD-WAN. In some of these embodiments, the set of wireless network links includes at least two wireless network links provided by at least two different service providers. By providing different wireless network links of different service providers, the edge router ensures that there is always a stable and reliable connection to the SD-WAN.
[0014] In some embodiments, the edge router is one of: (1) an edge router appliance, (2) an edge router executed on a computer operating in a vehicle, or (3) an edge router executed on a machine executing on a computer. In some embodiments, this computer is a first device, and in other embodiments is a different computer. In some embodiments, the virtual desktop VM is a first virtual desktop VM. In such embodiments, the hypervisor instantiates a set of two or more virtual desktop VMs including the first virtual desktop VM on the first device. In some embodiments, each virtual desktop VM is associated with a different remote user so that no two remote users access the same virtual desktop VM. In other embodiments, at least one virtual desktop VM is shared by at least two remote users.
[0015] Some embodiments provide a novel method for remotely performing data analysis on a set of data collected using a first device operating in a vehicle at a first location. At a remote second device used by a remote user at a remote second location, the method accesses a first VM executing on the first device via a network, the first VM allowing remote use of a second VM executing on the first device to generate analysis results of the data collected and stored at the vehicle. The method uses the first VM to (1) direct the second VM to analyze the set of data to generate a set of analysis results, (2) generate a rendered image showing the set of analysis results, and (3) forward the rendered image to the remote second device via the network for the remote user to view the set of analysis results.
[0016] In some embodiments, the first VM is a virtual desktop VM executing on the first device. The virtual desktop VM is instantiated on the first device to allow remote use of the first device. In some embodiments, the second VM is a data collection and analysis VM executing on the first device, and the data collection and analysis VM can be accessed by remote devices including the remote second device through the virtual desktop VM. By allowing remote access to the data collection and analysis second VM, data collected and stored at the vehicle can be immediately viewed and analyzed without the need to actually forward the data to the remote user.
[0017] In some embodiments, the rendered image is a first rendered image. In such embodiments, the virtual desktop VM provides a second rendered image of a user interface (UI) of the first device. In such embodiments, using the virtual desktop VM to guide the data collection and analysis VM includes interacting with the second rendered image to guide the data collection and analysis VM to produce the set of analysis results. For example, when the remote user on the remote second device interacts with the second rendered image (e.g., using keyboard selections, mouse clicks, etc.), the micro-agent module executed on the first VM converts these interactions into actual actions to be taken on the first device. This allows the remote user using the remote second device to guide the second VM to produce the analysis results. In other embodiments, a connection agent module executed on the first device converts the interactions into actual actions to be taken on the first device.
[0018] In some embodiments, the UI of the first device is a first UI, and the second rendered image includes the set of data to be viewed on a second UI of the remote second device. By viewing the set of data as an image on the second UI rather than forwarding the set of data directly to the remote second device, forwarding time is greatly reduced, resulting in more immediate viewing of the set of data on the remote second device.
[0019] The method of some embodiments uses the virtual desktop VM to direct the data collection and analysis VM to store the set of analysis results at the vehicle. In such embodiments, the set of analysis results is stored at the vehicle so that the set of analysis results can be forwarded to another device in the future. In some embodiments, before accessing the first VM, the method sends a first data message to the micro-agent module of the first device requesting access to the first VM. After sending this first data message, the method receives a second data message from the micro-agent module allowing access to the first VM.
[0020] In some embodiments, the micro-agent module allows access to the first VM based on a set of user authentication credentials (e.g., username and password) associated with the remote user. In combination or alternatively, the micro-agent module also allows access to the first VM based on a set of device authentication credentials (e.g., MAC address and / or IP address) associated with the remote second device.
[0021] In some embodiments, the network utilized by the remote second device to access and use the virtual desktop VM is an SD-WAN. In such embodiments, the remote second device accesses the virtual desktop VM using a set of one or more wireless network links associated with an edge router in the vehicle, the edge router connecting the vehicle to the SD-WAN. In some of these embodiments, the set of wireless network links includes at least two wireless network links provided by at least two different service providers. By providing different wireless network links from different service providers, the edge router ensures that there is always a stable and reliable connection to the SD-WAN.
[0022] In some embodiments, the edge router is one of: (1) an edge router appliance, (2) an edge router executed on a computer operating in a vehicle, or (3) an edge router executed on a machine executing on a computer. In some embodiments, this computer is a first device, and in other embodiments is a different computer. In some embodiments, the data containing the set of data is stored on a set of data storage devices of the first device. In other embodiments, the data containing the set of data is stored on a specific storage device connected to the first device. In such embodiments, the specific storage device is a secure SSD that helps maintain secure storage of data.
[0023] The foregoing summary is intended to serve as a brief introduction to some embodiments of the present invention. It is not meant to be an introduction or overview of all inventive subject matter disclosed in this document. The following detailed description and the drawings referenced in the detailed description will further describe the embodiments described in the summary as well as other embodiments. Therefore, in order to understand all embodiments described by this document, a comprehensive review of the summary, detailed description, drawings, and claims is required. In addition, the claimed subject matter is not limited by the illustrative details in the summary, detailed description, and drawings. BRIEF DESCRIPTION OF THE DRAWINGS
[0024] The novel features of the invention are set forth in the appended claims.For purposes of illustration, however, several embodiments of the invention are set forth in the following figures.
[0025] Figure 1 The processes of some embodiments for enabling remote access to a first device operating in a vehicle residing at a first location are conceptually illustrated.
[0026] Figure 2 An exemplary vehicle including components managed and configured by a set of managers and controllers is illustrated.
[0027] Figure 3Illustrated are exemplary vehicles that communicate with various components of the SD-WAN.
[0028] Figure 4 Illustrated is an exemplary vehicle that allows a remote user residing in a remote location to access a machine executing in the vehicle via an SD-WAN.
[0029] Figure 5 The process of some embodiments for authenticating a remote user to allow remote access to a virtual desktop VM executing on a local device operating in a vehicle is conceptually illustrated.
[0030] Figure 6 The process of some embodiments for facilitating interaction between a virtual desktop VM executing on a local device in a vehicle and a remote user accessing a virtual desktop VM on a remote device is conceptually illustrated.
[0031] Figure 7 The process of some embodiments for controlling the collection and analysis of VMs by a local device in a vehicle under the direction of a remote user using the remote device is conceptually illustrated.
[0032] Figure 8 Illustrated is an exemplary vehicle device accessed by a remote device via a network.
[0033] Fig. 9 A process of some embodiments for remotely performing data analysis on a set of data collected using a first device operating in a vehicle at a first location is conceptually illustrated.
[0034] Fig.10 The diagram illustrates a vehicle collecting data and storing data both at the vehicle and at a remote location.
[0035] Fig.11 The process of some embodiments for securely storing data and analysis results in a vehicle is conceptually illustrated.
[0036] Fig.12 The electronic systems utilized to implement some embodiments of the present invention are conceptually illustrated. DETAILED DESCRIPTION
[0037] In the following detailed description of the invention, numerous details, examples and embodiments of the invention are stated and described. However, it will be clear and apparent to those skilled in the art that the invention is not limited to the embodiments stated and that the invention can be practiced without some of the specific details and examples discussed.
[0038] Some embodiments provide a novel method for analyzing data collected by a vehicle at a first location. On a first device operating in a vehicle, the method instantiates a virtual desktop first virtual machine (VM), the virtual desktop first VM for remote use of the first device by a remote user using a remote second device at a remote second location. The method instantiates a data collection second VM, the data collection second VM for local use of the first device to collect a set of data at the first location and store the set of data at the vehicle. The method facilitates interaction between the virtual desktop first VM and the remote user via a network to enable the remote user to access the data collection second VM to analyze the set of data without forwarding the set of data to the remote second device via the network.
[0039] In some embodiments, the method is performed by a management program of the first device. In some embodiments, the management program also configures a micro-agent module within the virtual desktop VM to authenticate the remote user and facilitate interaction between the virtual desktop VM and the remote user. By authenticating the remote user, the micro-agent module helps prevent unauthorized users from accessing the first device or data stored at the vehicle. In some embodiments, the micro-agent module authenticates a set of user authentication credentials (e.g., username and password) associated with the remote user. In combination or alternatively, the micro-agent module authenticates a set of device authentication credentials (e.g., media access control (MAC) address and / or Internet Protocol (IP) address) associated with the remote second device. The micro-agent module of some embodiments stores a table containing records of authorized remote users and their usernames and passwords and records of authorized remote devices and their MAC and IP addresses.
[0040] Instead of configuring a micro-agent module in a virtual desktop VM, other embodiments configure a connection proxy module on the first device to authenticate a remote user and facilitate interaction between the virtual desktop VM and the remote user. In such embodiments, the connection proxy module can authenticate a remote user to access multiple virtual desktop VMs instantiated on the first device.
[0041] In some embodiments, the data stored at the vehicle is stored on the first device, such as on a local data storage device of the first device. In other embodiments, the data is stored on a specific storage device connected to the first device. In such embodiments, the specific storage device is a secure solid-state drive (SSD) that helps the hypervisor maintain secure storage of the data.
[0042] In some embodiments, the hypervisor configures a synchronization agent on the virtual desktop VM to copy the data stored on the secure SSD to the remote data storage device. This ensures that in the event of data loss on the secure SSD, the data can still be retrieved from the remote data storage device. In some embodiments, the remote data storage device is a cloud data storage device at a cloud location. In other embodiments, the remote data storage device is a data center data storage device at a remote data center location.
[0043] In some embodiments, the hypervisor detects potential unauthorized access to the secure SSD. In some embodiments, this is due to an unauthorized remote user accessing a first device. In such embodiments, the remote user is a first remote user, and the hypervisor detects unauthorized access to a virtual desktop VM by a second remote user using a remote third device. After detecting the potential unauthorized access to the secure SSD, the hypervisor deletes the data stored on the secure SSD, but because the data has been copied to the remote data storage device by the synchronization agent, the data can still be retrieved by the authorized remote user.
[0044] In some embodiments, the network utilized by the virtual desktop VM to communicate with the remote user is a software defined wide area network (SD-WAN). In such embodiments, the remote user interacts with the virtual desktop VM using a set of one or more wireless network links associated with an edge router in a vehicle that connects the vehicle to the SD-WAN. In some of these embodiments, the set of wireless network links includes at least two wireless network links provided by at least two different service providers. By providing different wireless network links of different service providers, the edge router ensures that there is always a stable and reliable connection to the SD-WAN.
[0045] In some embodiments, the edge router is one of: (1) an edge router appliance, (2) an edge router executed on a computer operating in a vehicle, or (3) an edge router executed on a machine executing on a computer. In some embodiments, this computer is a first device, and in other embodiments is a different computer. In some embodiments, the virtual desktop VM is a first virtual desktop VM. In such embodiments, the hypervisor instantiates a set of two or more virtual desktop VMs including the first virtual desktop VM on the first device. In some embodiments, each virtual desktop VM is associated with a different remote user so that no two remote users access the same virtual desktop VM. In other embodiments, at least one virtual desktop VM is shared by at least two remote users.
[0046] Some embodiments provide a novel method for remotely performing data analysis on a set of data collected using a first device operating in a vehicle at a first location. At a remote second device used by a remote user at a remote second location, the method accesses a first VM executing on the first device via a network, thereby allowing a second VM executing on the first device to be remotely used to generate analysis results of the data collected and stored at the vehicle. The method uses the first VM to: (1) direct the second VM to analyze the set of data to generate a set of analysis results, (2) generate a rendered image showing the set of analysis results, and (3) forward the rendered image to the remote second device via a network for the remote user to view the set of analysis results.
[0047] In some embodiments, the first VM is a virtual desktop VM executing on the first device. The virtual desktop VM is instantiated on the first device to allow remote use of the first device. In some embodiments, the second VM is a data collection and analysis VM executing on the first device that can be accessed by remote devices, including the remote second device, through the virtual desktop VM. By allowing remote access to the data collection and analysis second VM, data collected and stored at the vehicle can be immediately viewed and analyzed without actually forwarding the data to the remote user.
[0048] In some embodiments, the rendered image is a first rendered image. In such embodiments, the virtual desktop VM provides a second rendered image of a user interface (UI) of the first device. In such embodiments, using the virtual desktop VM to guide the data collection and analysis VM includes interacting with the second rendered image to guide the data collection and analysis VM to produce the set of analysis results. For example, when a remote user on a remote second device interacts with the second rendered image (e.g., using keyboard selections, mouse clicks, etc.), a micro-agent module executed on the first VM converts these interactions into actual actions to be taken on the first device. This allows a remote user using the remote second device to guide the second VM to produce analysis results. In other embodiments, a connection agent module executed on the first device converts the interactions into actual actions to be taken on the first device.
[0049] In some embodiments, the UI of the first device is a first UI, and the second rendered image includes the set of data to be viewed on a second UI of the remote second device. By viewing the set of data as an image on the second UI rather than forwarding the set of data directly to the remote second device, the forwarding time is greatly reduced, resulting in a more immediate viewing of the set of data on the remote second device.
[0050] The method of some embodiments uses a virtual desktop VM to direct the data collection and analysis VM to store the set of analysis results at the vehicle. In such embodiments, the set of analysis results is stored at the vehicle so that the set of analysis results can be forwarded to another device in the future. In some embodiments, before accessing the first VM, the method sends a first data message to a micro-agent module of the first device requesting access to the first VM. After sending this first data message, the method receives a second data message from the micro-agent module allowing access to the first VM.
[0051] Virtual desktop technology allows users to connect to a VM that hosts a desktop environment in a remote data center or cloud location. Virtual desktop technology works by exporting a streaming image of the desktop back to the user using virtual desktop infrastructure (VDI) client software to: (1) establish a connection to the desktop, (2) authenticate the user's use of the desktop, and (3) pass the user's keyboard and mouse movements to the virtual desktop. In some embodiments, the traffic pattern of the virtual desktop is asymmetric, where the bandwidth to the desktop is relatively narrow due to the modest keyboard and mouse commands. In some embodiments, because the video stream is forwarded to the remote user to represent the movements on the screen, higher bandwidth leaves the desktop and propagates back to the remote user.
[0052] When a remote user interacts with the virtual desktop of a device, the remote user virtually operates the device as if the remote user were present at the same location as the device. Because of this, in some embodiments, the remote user operates the VMs, applications, and data of the device as if the remote user were using the device directly. Because of this, data-intensive operations (such as data streaming and analysis) can be performed remotely without actually forwarding the data to the remote user. By instantiating a virtual desktop on a device in a vehicle, a remote user of some embodiments can immediately view and analyze data collected at the vehicle without forwarding the data to the remote user.
[0053] This is very useful for large amounts of data that are collected at one location but need to be analyzed by a person at another location. Although the embodiments described below will be described with respect to using a virtual desktop on a vehicle device, the described embodiments are also applicable to any device residing at a certain location that collects and stores data to be used by a person residing in another location. For example, some embodiments instantiate a virtual desktop on a first device in a first location of the SD-WAN. Instead of forwarding the data from the first device to a second device in a second location of the SD-WAN, a user of the second device may instead access the virtual desktop of the first device to perform operations on the data.
[0054] Figure 1Conceptually illustrates a process 100 of some embodiments for enabling remote access to a first device operating in a vehicle residing at a first location. In some embodiments, the process 100 is performed so that a remote user can access one or more resources (e.g., VMs, applications, etc.) executing on the first device and / or data collected by the first device at the first location. In some embodiments, the process 100 is performed by a hypervisor of the first device.
[0055] Process 100 begins by instantiating (at 105) a virtual desktop VM on a first device. In some embodiments, a hypervisor of the first device creates a virtual desktop VM on the first device, which enables the first device to be accessed by remote users via a network (e.g., SD-WAN). In some embodiments, the hypervisor instantiates one virtual desktop VM shared by each remote user accessing the first device. In other embodiments, the hypervisor instantiates a set of virtual desktop VMs such that no two remote users access the same virtual desktop VM. In some of these embodiments, the hypervisor initially instantiates multiple VMs for individual use by multiple remote users. In other embodiments, the hypervisor initially instantiates one virtual desktop VM, and after this virtual desktop VM is accessed by the first remote user, the hypervisor instantiates another virtual desktop VM for future use by a second remote user.
[0056] Next, process 100 instantiates (at 110) a data collection and analysis VM on the first device to collect and analyze data locally at the vehicle. In some embodiments, the hypervisor instantiates this second VM on the first device for a local user (i.e., a user operating the vehicle and the first device locally) to collect data for analysis. For example, in some embodiments, the vehicle is a police vehicle, and the local user of the police vehicle uses the data collection and analysis VM to collect evidence at the scene (i.e., at the first location). In some embodiments, this data is stored on the first device, while in other embodiments, this data is stored on a specific storage device (e.g., a secure SSD) in the police vehicle. Because the virtual desktop VM is instantiated on the first device, a remote user can access the collected data and use the data collection and analysis VM to remotely view and analyze the collected data without forwarding the data to the remote device of the remote user.
[0057] At 115, process 100 configures a micro-agent module on the virtual desktop VM to authenticate a remote user for use of the virtual desktop VM. In some embodiments, before any remote user can remotely access the virtual desktop VM, the remote user must be authenticated by the micro-agent module. In some embodiments, the micro-agent module is a program or application that is executed within the virtual desktop VM to implement the virtual desktop of the first device. When authenticating a remote user, in some embodiments, the micro-agent module authenticates a set of user credentials (e.g., a user name and password) associated with the remote user. In such embodiments, the micro-agent module receives the user credentials in an access request from the remote user.
[0058] In conjunction or alternatively, in some embodiments, the micro-agent module authenticates a set of device credentials (e.g., MAC address and / or IP address) associated with the remote device used by the remote user. In these embodiments, the device credentials are received in the access request. Any type of authentication credentials can be used to authenticate the remote user or remote device.
[0059] In some embodiments, when configuring the micro-agent module to authenticate remote users, the hypervisor configures the micro-agent module with a set of rules that guide which resources (e.g., VMs, applications, etc.) different remote users are allowed to access. For example, in some embodiments, the set of rules allows a first specific remote user to use a virtual desktop to access a data collection and analysis VM and all locally collected data, but only allows a second specific remote user to use a virtual desktop to access a data collection and analysis VM and a subset of locally collected data.
[0060] Next, process 100 configures (at 120) a micro-agent module to facilitate interaction between the virtual desktop VM and the authenticated remote user so that the remote user can access the data collection and analysis VM and the data collected at the vehicle. In some embodiments, the micro-agent module facilitates interaction between the virtual desktop VM and the remote user by generating a rendered image of the first device and forwarding the rendered image to the remote user so that the remote user can see the first device and its resources on his remote device, as if the remote user was using the first device directly. When the remote user interacts with the rendered image (e.g., using keyboard selections, mouse clicks, etc.), the micro-agent module collects these interactions and uses the virtual desktop VM to convert the interactions into actual actions, so that it appears to be on the first device controlled by the remote user. This back-and-forth interaction between the micro-agent module and the remote user allows the remote user to use the first device. After the hypervisor configures the micro-agent module to facilitate interaction between the virtual desktop VM and the authenticated remote user, process 100 ends.
[0061] Figure 2An exemplary vehicle 200 including components managed and configured by a set of managers and controllers 205 is illustrated. In this example, the vehicle 200 includes a device 210 and an edge router 220 that is connected to the manager and controller set 205 using a set of one or more wireless network connection links 230 (e.g., a mobile hotspot (MHS)). In some embodiments, the edge router 220 is an edge router appliance, an edge router executed on a computer operating in the vehicle 200, or an edge router executed on a machine executing on a computer in the vehicle 200. The edge router 220 can connect to the manager and controller set 205 using any number of wireless network connection links 230 provided by any number of cellular providers. In some embodiments, these wireless network connection links 230 are also used to connect the device 210 to remote users using remote devices.
[0062] In some embodiments, the manager and controller group 205 is a group of management servers implementing a management plane (MP) and a group of controllers implementing a control plane (CP) of the SD-WAN connected to the vehicle 200. In some of these embodiments, the device 210 executes at least one of a local control plane (LCP) module and a local management plane (LMP) module associated with the CP and MP, respectively. The manager and controller group 205 operates in a different location from the vehicle 200, such as at a public or private cloud data center. Other information about the manager, controller, and SD-WAN connected to the vehicle will be described below.
[0063] Vehicle 200 includes device 210. In some embodiments, device 210 is a computer. Although only one device 210 is depicted in this figure, it will be understood by those skilled in the art that any number of devices can be executed in vehicle 200 and used by remote users using virtual desktops. In some embodiments, device 210 includes a group of one or more machines 240, a hypervisor 250, a group of one or more virtual desktop VMs 270 (each executing a micro-agent 260), and a UI 280. Device 210 can execute any number of machines 240, which perform any suitable type of operation (e.g., data collection, data analysis, and analytics, etc.). In some embodiments, machine 240 is at least one of a VM, a container, and a cluster. In some embodiments, each VM 240 performs a set of operations for a set of one or more applications. In some embodiments, these operations are directed to be performed by one or more local users of vehicle 200 through UI 280. In combination or alternatively, the operation is performed by one or more remote users through virtual desktop VM 270.
[0064] In some embodiments, the hypervisor 250 is configured by the manager and controller group 205 to configure the machine 240, the micro agent 260, and the set of virtual desktop VMs 270. For example, as directed by the manager and controller group 205, the hypervisor 250 instantiates and updates the machine 240 and the virtual desktop VM 270, and configures the micro agent 260. In some embodiments, the hypervisor 250 configures the set of virtual desktop VMs 270 and the machine 240 by directing a device OS (not shown) to configure the set of virtual desktop VMs 270 and the machine.
[0065] In some embodiments, the hypervisor 250 instantiates the set of virtual desktop VMs 270 in the device 210 to enable remote users to access the machine 240 using the wireless network link 230. In some embodiments, the hypervisor 250 instantiates a specific number of virtual desktop VMs 270 to be shared by remote users. For example, in some embodiments, the hypervisor 250 instantiates one virtual desktop VM 270 on the device 210 for sharing by all remote users. As another example, in some embodiments, the hypervisor 250 instantiates a specific number of virtual desktop VMs (e.g., four virtual desktop VMs) on the device 210 for sharing by remote users.
[0066] In other embodiments, the hypervisor 250 instantiates a different virtual desktop VM 270 for each remote user authenticated as having access to the device 210, so that no two remote users use the same virtual desktop VM. In some of these embodiments, the hypervisor 250 instantiates a new virtual desktop VM 270 after a remote user has requested access to the device 210. In other embodiments, the hypervisor 250 instantiates a specific set of virtual desktop VMs 270 on the device 210, and after each virtual desktop VM has been associated with a remote user, the hypervisor 250 then instantiates more virtual desktop VMs on the device 210.
[0067] When a remote user requests access to one of the virtual desktop VMs 270 via a set of wireless network links 230, the micro-agent 260 of the virtual desktop VM receives the request and authenticates the remote user and / or the device the remote user is using. In some of these embodiments, once the micro-agent 260 of a particular virtual desktop VM 270 allows a particular remote user to access the particular virtual desktop VM, the micro-agent 260 will not allow any other remote user to access the particular virtual desktop VM. In such embodiments, no two remote users access the same virtual desktop VM 270.
[0068] Some embodiments configure a single connection broker module on the device 210 to facilitate the interaction between the user and all virtual desktop VMs 270, rather than executing different micro-agents 260 within each virtual desktop VM 270. In such embodiments, when the connection broker receives a request from a remote user to access the set of virtual desktop VMs 270, the connection broker authenticates the remote user and assigns a specific virtual desktop VM to the remote user. In some of these embodiments, this is because only one remote user uses each virtual desktop VM. In other embodiments, even if two or more remote users use the same virtual desktop VM, this is because each remote user uses the same virtual desktop VM for each session.
[0069] For example, a particular remote user is assigned a particular virtual desktop VM for accessing machine 240 during a first session. After the remote user ends this session, the remote user no longer accesses the virtual desktop VM. When the remote user requests a second session to access machine 240, the connection agent assigns the same virtual desktop VM used by the remote user in the first session to the remote user. In some embodiments, the second session reproduces an image of device 210 to the remote user, the image is just as the remote user left the device at the end of the first session (i.e., the virtual desktop VM is a persistent virtual desktop). This allows the remote user to customize their virtual desktop VM and maintain the state of their virtual desktop across multiple sessions. In other embodiments, the second session reproduces an image of device 210 to the remote user, the image showing device 210, as if the remote user had never used device 210 before (i.e., the virtual desktop VM is a non-persistent virtual desktop). In these embodiments, the connection agent 260 reproduces the same rendered image of device 210 to the remote user at the beginning of each session.
[0070] In some embodiments, machine 240 includes one or more data collection and / or analysis VMs for collecting and analyzing data collected at the location of the vehicle. In some of these embodiments, vehicle 200 includes a set of one or more data storage devices 290 for storing data collected by device 210 (i.e., by one or more data collection VMs 240 executed on device 210). Vehicle 200 may include any number of data storage devices 290. In some embodiments, data storage device 290 is a secure SSD.
[0071] In some embodiments, the data collection VM 240 executing on the device 210 is the only VM associated with a particular data storage device 290. In such embodiments, the data storage device 290 is presented to the virtual desktop VM 270 by means of a direct pass-through feature of the hypervisor 250. Making a particular data storage device available only to a particular VM on the device 210 allows specialized drivers within the device 210 to access the firmware and basic input / output system (BIOS) features of the device 210.
[0072] In some embodiments, data stored on the data storage device 290 is synchronized to a remote location, which may take a significant amount of time (e.g., several days). However, because the remote user is able to access the VM 240 (e.g., data collection and analysis VM) on the device 210 through the virtual desktop VM 270, analysis and operational insights can be immediately performed on the data collected at the vehicle 200. For example, in some embodiments, large amounts of data (e.g., phone images) are collected at the vehicle 200 and stored on the data storage device 290. The remote user uses the virtual desktop VM 270 to access the device 210 and immediately view and analyze the data without actually forwarding the large amount of data to the remote user.
[0073] Because the set of micro-agents 260 forwards the rendered image of the device 210 to the remote user, which is much smaller data and forwarded faster than the collected data stored on the data storage device 290, the set of micro-agents 260 allows the remote user to efficiently view and analyze the data. In some embodiments, the remote user uses the analysis VM on the device 210 to remotely analyze the data, and the analysis results are stored in the data storage device 290. This ability to project the expertise of a small group of experts located in different locations into one or various remote vehicles is highly efficient, thereby reducing the number of such highly specialized technicians required to serve a larger geographic area.
[0074] As previously discussed, the vehicle in some embodiments is connected to the SD-WAN to allow a remote user to access one or more devices operating in the vehicle. Figure 3 An example of vehicles 300 and 310 communicating with various components of the SD-WAN is illustrated. Any number of vehicles 1 to N may be used. Vehicles 300 and 310 include sets of one or more computing machines 302 and 312, SD-WAN routers 304 and 314, and network links 305 to 307 and 315 to 317, respectively. The SD-WAN connects a cloud gateway 320, a data center site 330, and a branch site 340.
[0075] In some embodiments, a cloud gateway (CGW) 320 is a forwarding element in a private or public data center 325. In some embodiments, the CGW 320 has a secure connection link (e.g., tunnel) with an edge forwarding element (e.g., SD-WAN edge FE 342) at a multi-machine site (e.g., SD-WAN edge site 340 with multiple machines 345) such as a branch office, a data center, etc. These multi-machine sites are typically located at different physical locations (e.g., different buildings, different cities, different states, etc.) and are referred to as multi-machine sites or nodes in some embodiments. Two multi-machine sites 330 and 340 are illustrated in this figure, where one of the multi-machine sites is a branch site 340 and one of the multi-machine sites is a data center site 330. The branch site is shown as including an edge forwarding node 342, while the data center site 330 is shown as including a hub forwarding node 332. The edge forwarding element (e.g., SD-WAN edge FE 342) exchanges data messages with one or more cloud gateways 320 through one or more connection links 350 (e.g., multiple connection links available at the edge forwarding element).
[0076] In some embodiments, each edge forwarding element (e.g., edge forwarding elements 332 and 342) includes a router that uses routing records to forward data messages throughout the SD-WAN. In some embodiments, these routing records are next-hop forwarding records. In some embodiments, each edge forwarding element is connected to an external network via two or more physical links (e.g., cable modem links, 5G links, multi-protocol label switching (MPLS) links, etc.). In such embodiments, each edge forwarding element is connected to each of these physical links via another forwarding element such as a cable modem, a 5G wireless transceiver, an MPLS appliance, etc. In some embodiments, two or more different physical links and their corresponding forwarding elements are provided by different service providers.
[0077] In some embodiments, the edge forwarding elements are connected via direct links, through CGWs, or through hubs. Starting from the CGW, in some embodiments, the CGW acts as a route reflector, for example, for announcing data messages throughout the SD-WAN. In some embodiments, the CGW directs the end-to-end connection to form a direct link. In some embodiments, the CGW directs the end-to-end connection through a hub so that services are performed at the hub as the data message traverses the hub.
[0078] When multiple such links are defined between the edge node and the gateway, in some embodiments, each secure connection link is associated with a different physical network link between the edge node and the external network. For example, in order to access the external network, the edge node in some embodiments has one or more commercial broadband Internet links (e.g., cable modems, fiber optic links) for accessing the Internet, an MPLS link for accessing the external network through the MPLS provider's network, and a wireless cellular link (e.g., a 5G LTE network). In some embodiments, the different physical links between the edge node 342 and the cloud gateway 320 are links of the same type (e.g., different MPLS links).
[0079] In some embodiments, the edge forwarding node 342 also has multiple direct links 350 (e.g., secure connection links established through multiple physical links) to the data center hub node 332. Again, different links in some embodiments may use different types of physical links or the same type of physical links. In addition, in some embodiments, the edge forwarding node 342 at the branch site may be connected to the SD-WAN router of the vehicle (1) directly through one or more links 350 or (2) through a cloud gateway or data center hub, and the edge forwarding node is connected to the cloud gateway or data center hub through two or more links 350. Therefore, in some embodiments, the edge forwarding node 342 at the branch site 340 can use multiple SD-WAN links 350 to reach the SD-WAN router (e.g., 304) of the vehicle (e.g., 300), or the hub forwarding node 332 of the data center site 330.
[0080] In some embodiments, the cloud gateway 320 is used to connect the SD-WAN router of the vehicle (e.g., the SD-WAN router 314 of the vehicle 310) to the SD-WAN forwarding node (e.g., the edge forwarding element 342) through at least two secure connection links 350 between the gateway 320 and the SD-WAN router and between the gateway 320 and the forwarding element at the SD-WAN site (e.g., the branch site 340 or the data center site 330). In some embodiments, the cloud gateway 320 also provides network data from the vehicle to the multi-machine site or from one multi-machine site to another multi-machine site (e.g., providing an accessible subnetwork from one site to another site). Like the cloud gateway 320, in some embodiments, the hub forwarding element 332 of the data center 330 can be used to connect the SD-WAN forwarding node 342 of the branch site to the SD-WAN router of the vehicle through at least two secure connection links 350 between the hub 332 and the SD-WAN router and between the hub 332 and the forwarding element at the branch site 340.
[0081] In some embodiments, each edge forwarding element, hub, and cloud gateway in the SD-WAN (e.g., edge forwarding element 332, data center hub forwarding element 334, and cloud gateway 320) includes a router that performs data message forwarding operations of the edge forwarding element, hub forwarding element, or cloud gateway. In such embodiments, the next-hop forwarding records of these edge forwarding elements, hub forwarding elements, and cloud gateways are routing records used by the routers to forward data messages through the SD-WAN.
[0082] In some embodiments, each edge forwarding element at an edge site (e.g., edge forwarding element 342 at edge site 340) is connected to an external network through two or more forwarding devices (e.g., MPLS devices, cable modem routers, 5G routers) of two or more communications service providers (e.g., telephone company providers of MPLS networks, cable modem providers of Internet service providers (ISPs), wireless providers for 5G connections). In some of these embodiments, each edge forwarding element is connected to the forwarding devices of the service provider through two or more physical ports of the edge forwarding element.
[0083] In some embodiments, each secure connection link between two SD-WAN forwarding nodes (i.e., CGW 320 and edge forwarding node 342) is formed as a virtual private network (VPN) tunnel between the two forwarding nodes. In this example, the set of SD-WAN forwarding nodes (e.g., forwarding element 342 and gateway 320) and the secure connections 350 between the forwarding nodes form a virtual network of a specific entity, which spans at least a public or private cloud data center 325 to connect a branch site 340 and a data center site 330.
[0084] In some embodiments, secure connection links are defined between gateways in different public cloud data centers to allow paths through virtual networks to traverse from one public cloud data center to another public cloud data center, while in other embodiments such links are not defined. In addition, in some embodiments, gateway 320 is a multi-tenant gateway for defining other virtual networks for other entities (e.g., other companies, organizations, etc.). Some such embodiments use a tenant identifier to create a tunnel between a gateway and an edge forwarding element of a particular entity, and then use the tunnel identifier of the created tunnel to allow the gateway to distinguish between data message streams it receives from an edge forwarding element of an entity and data message streams it receives along other tunnels of other entities. In other embodiments, the gateway is single-tenant and is specifically deployed to be used by only one entity.
[0085] Figure 3The diagram illustrates a manager and controller cluster 360 used as a central point for managing (e.g., defining and modifying) configuration data, which is provided to edge nodes and / or gateways to configure some or all of the operations. In some embodiments, this manager and controller cluster 360 is in one or more public cloud data centers, while in other embodiments, the manager and controller cluster is in one or more private data centers. In some embodiments, the manager and controller cluster 360 has a set of manager servers that define and modify configuration data, and a set of controller servers that distribute configuration data to edge FEs, hubs, and / or gateways. In some embodiments, the manager and controller cluster 360 facilitates the configuration of virtual desktop machines (e.g., virtual desktop VMs) on vehicles 300 and 310 so that remote users residing at different locations 330 and 340 can access machines 302 and 312 executed on vehicles 300 and 310.
[0086] Figure 4 An exemplary vehicle 400 is illustrated that allows remote users residing in a set of remote sites 420 and 430 to access machines 402 executing in the vehicle 400 via an SD-WAN. In this figure, a set of one or more machines 402 and a virtual desktop VM 404 executing a micro-agent 406 are executed on a device 408 operating in the vehicle 400. The vehicle 400 also includes an SD-WAN router 410 that communicates with the remote sites 420 and 430 using a set of wireless network connection links 412, and a data storage device 414 that stores data collected at the vehicle 400 and analysis results of the collected data. The vehicle 400 may include any number of machines 402 and any number of wireless network connection links 412.
[0087] Remote sites 420 and 430 include a set of machines 422 and 432, respectively, and SD-WAN routers 424 and 434. In some embodiments, machine sets 422 and 432 execute on one or more devices (e.g., computers) used by remote users residing in remote sites 420 and 430. SD-WAN routers 424 and 434 are forwarding elements that exchange data messages with SD-WAN router 410 in vehicle 400.
[0088] In some embodiments, CGW 440 is a forwarding element in a private or public data center 445. In some embodiments, CGW #440 has a secure connection link (e.g., tunnel) with edge forwarding elements (e.g., SD-WAN routers 424 and 434) at remote sites 420 and 430. In some embodiments, CGW 440 is used to connect the SD-WAN router 410 of the vehicle 400 to the SD-WAN forwarding node (e.g., SD-WAN routers 424 and 434) through at least two secure connection links 450. In some embodiments, cloud gateway #440 also provides network data from the vehicle 400 to the remote site or from one remote site to another remote site (e.g., providing an accessible subnetwork from one site to another site).
[0089] In some embodiments, a remote user operating with machines 422 and 432 requests access to a device's virtual desktop 404 from a micro-agent 406. After authenticating the remote user and granting access to the virtual desktop 404, the micro-agent 406 facilitates the interaction between the virtual desktop 404 and the remote user. For example, a particular remote user at a remote site 420 requests access to a virtual desktop 404 for the purpose of analyzing data collected at a vehicle 400 and stored in a data storage device 414. The remote user desires to access the virtual desktop 404 via the SD-WAN rather than requesting that the collected data be sent to the remote user's device or uploaded to the cloud, for example, because accessing the virtual desktop 404 is more efficient than forwarding or uploading the data.
[0090] After the micro-agent 406 receives the access request and authenticates the specific remote user, the specific remote user interacts with the virtual desktop 404 via the micro-agent 406. The specific remote user can then direct the machine 402 to view and analyze the data stored in the data storage device 414 and store the analysis results in the data storage device 414.
[0091] As previously discussed, in some embodiments, a micro-agent module is configured within a virtual desktop VM operating on a vehicle device to authenticate a remote user before the remote user is allowed to access the virtual desktop VM. Figure 5 Conceptually illustrates a process 500 of some embodiments for authenticating a remote user to allow remote access to a virtual desktop VM executed on a local device operating in a vehicle. In some embodiments, the process 500 is performed by a micro-agent (e.g., a micro-agent program, application, or module) executing within the virtual desktop VM on the local device (e.g., Figure 2 Micro-agent 260 or Figure 4In some embodiments, the virtual desktop VM and micro-agent are configured on a local device (e.g., by a hypervisor of the local device) for the purpose of allowing remote access to the local device and the VM and / or application executing on the local device.
[0092] In other embodiments, process 500 is performed by a connection proxy module executed on a local device but not executed within a virtual desktop VM. In some embodiments, the connection proxy module authenticates the remote user only for the virtual desktop VM, and in other embodiments authenticates the remote user for a group of two or more virtual desktop VMs executed on the local device.
[0093] As used herein, a local device is a device operating in a vehicle, while a remote device is used herein to describe a device not operating in a vehicle or not connected to a vehicle. For example, in some embodiments, a remote device is a mobile device that is co-located with a vehicle but is not directly connected to the vehicle and the vehicle's edge router that connects the vehicle to the SD-WAN (e.g., the remote device is a mobile computer of a person in the vehicle). These mobile devices access the vehicle's devices using a virtual desktop and a remote device operating at a different location from the vehicle.
[0094] Process 500 begins by receiving (at 505) a request from a remote user using a remote device to access a virtual desktop VM of a local device. The micro-agent receives a data message from the remote user requesting access to the virtual desktop VM so that the remote user can access one or more resources associated with the local device (e.g., VM, application, stored data, etc.). In some embodiments, the request is received as an application programming interface (API) request.
[0095] Next, process 500 retrieves (at 510) a set of authentication credentials associated with the remote user and / or remote device. In some embodiments, in step 505, the authentication credentials are included in the request received by the micro-agent. In such embodiments, the micro-agent extracts the authentication credentials from the received request. In other embodiments, the authentication credentials are not received in the request. In these embodiments, the micro-agent sends a data message (e.g., an API request) requesting authentication credentials to the remote user, and the remote user provides the requested authentication credentials in a reply data message (e.g., an API reply message). In some embodiments, the micro-agent needs to authenticate the remote user, and the set of authentication credentials includes a username and password associated with the remote user. In these embodiments, a unique username and password are associated with each remote user of the SD-WAN in order to authenticate each remote user for accessing the virtual desktop. In combination or alternatively, the micro-agent needs to authenticate the remote device used by the remote user, and the set of authentication credentials includes a MAC address and / or IP address associated with the remote device.
[0096] At 515, process 500 determines whether the set of authentication credentials allows the remote user to access the virtual desktop VM. Using the retrieved set of authentication credentials, the micro proxy authenticates the remote user and / or remote device. In some embodiments, the micro proxy maintains a data store (e.g., residing on a local device) containing a record of each remote user and / or remote device that is allowed to access the virtual desktop VM. In embodiments where the set of authentication credentials only includes authentication credentials associated with the remote user, the micro proxy only has to determine whether the remote user is allowed to access the virtual desktop VM. In embodiments where the set of authentication credentials only includes authentication credentials associated with the remote device, the micro proxy only has to determine whether the remote device used by the remote user is allowed to access the virtual desktop VM. In embodiments where the set of authentication credentials includes authentication credentials associated with both the remote user and the remote device, the micro proxy determines whether the remote user and / or the remote device used by the remote user is allowed to access the virtual desktop VM.
[0097] If the process 500 determines that the set of authentication credentials does not allow the remote user to access the virtual desktop VM, then the process 500 sends (at 520) a failure message to the remote user. When the micro-agent determines that the remote user is not allowed to access the local device, the micro-agent sends a data message (e.g., in an API) to the remote user, which notifies the remote user that access to the virtual desktop of the local device has failed. After sending the failure message to the remote user, the process 500 ends.
[0098] If the process 500 determines that the set of authentication credentials allows the remote user to access the virtual desktop VM, then the process 500 continues to determine (at 525) which resources of the local device the remote user and / or remote device is allowed to access using the virtual desktop VM. In some embodiments, each remote user and / or each remote device of the SD-WAN is allowed to access a subset of resources (e.g., VMs, applications, stored data, etc.) associated with the local device through the virtual desktop VM. In such embodiments, the micro-agent maintains a mapping table that maps authentication credentials to a list of resources that are allowed to be accessed by the remote user and / or remote device associated with the authentication credentials. For example, for a remote user accessing a virtual desktop VM to analyze a set of data collected at a vehicle, in some embodiments, the micro-agent determines that the remote user is allowed to access data stored at the vehicle (e.g., on a local device or on a data storage device connected to the local device), data collection VMs, and data analysis VMs. In other embodiments, any authenticated remote user is allowed to access all resources executed on the local device, and the micro-agent does not need to determine which resources are allowed to be accessed.
[0099] Finally, process 500 initiates (at 530) interaction between the virtual desktop VM and the remote user. In some embodiments, the micro-agent allows the remote user to communicate with the virtual desktop VM in order to use the resources of the local device. In some embodiments, the micro-agent initiates interaction between the virtual desktop VM and the remote user by sending a session initiation message to the virtual desktop VM, notifying the virtual desktop VM that the remote user is allowed to access the virtual desktop VM. In some embodiments, the session initiation message also specifies which resources of the local device the remote user is allowed to access.
[0100] In some embodiments, the micro-agent sends a rendered image of the UI of the local device to the remote user, and when the remote user interacts with the rendered image (e.g., through keyboard selections, mouse clicks, etc.), the micro-agent receives notification of these interactions and translates them to the virtual desktop VM, which performs these actions directly on the local device. Additional information about the interactions between the virtual desktop VM and the remote device facilitated by the micro-agent will be described below. After initiating the interaction between the virtual desktop VM and the remote user, process 500 ends.
[0101] Figure 6 Conceptually illustrating a process 600 of some embodiments for facilitating interaction between a virtual desktop VM executing on a local device in a vehicle and a remote user accessing a virtual desktop VM on a remote device. In some embodiments, process 600 is performed by a micro-agent (e.g., a micro-agent program, application, or module) executing within the virtual desktop VM (e.g., Figure 2 Micro-agent 260 or Figure 4In some embodiments, process 600 is performed after the micro-agent has authenticated the remote user, thereby allowing the remote user to access the virtual desktop VM and at least a subset of the resources of the local device. Authentication enables the micro-agent to initiate an interactive session between the remote user and the virtual desktop.
[0102] In other embodiments, process 600 is performed by a connection proxy module executed on a local device but not executed within a virtual desktop VM. In some embodiments, the connection proxy module authenticates the remote user only for the virtual desktop VM, and in other embodiments authenticates the remote user for a group of two or more virtual desktop VMs executed on the local device.
[0103] Process 600 begins by forwarding (at 605) a rendered image of a UI of a local device to a remote user. In order for the remote user to interact with the local device through the virtual desktop VM, the micro-agent forwards the rendered image of the UI of the local device for the user to view. In some embodiments, the rendered image is generated by the virtual desktop VM, which forwards the rendered image to the connection agent for forwarding to the remote user. In other embodiments, the rendered image is generated by the micro-agent. In some embodiments, the rendered image is forwarded via a wireless network link that connects the vehicle (i.e., the vehicle's edge router) to the SD-WAN.
[0104] Next, process 600 determines (at 610) whether any interaction notifications have been received from the remote user. As the remote user interacts with the rendered image of the local device's UI (e.g., using keyboard selections, mouse clicks, etc.), the micro-agent receives these interactions from the remote user. If process 600 determines that no interaction notifications have been received (i.e., the micro-agent has not been notified that the remote user has interacted with the rendered image), process 600 continues to step 625, which will be described below.
[0105] If the process 600 determines that one or more interaction notifications have been received (i.e., the micro-agent has been notified that the remote user has interacted with the rendered image), the process 600 converts (at 615) the received interaction notifications into a set of actions and forwards the set of actions to the virtual desktop VM for execution. In some embodiments, to facilitate the interaction between the virtual desktop VM and the remote user, the micro-agent converts the interactions performed by the remote user on the rendered image into actual actions that the virtual desktop VM performs on the VM of the local device. For example, in some embodiments, the remote user interacts with the rendered image to view a set of data collected at the vehicle. When the micro-agent receives these interactions, it provides the remote user's actions to the virtual desktop VM, and the virtual desktop VM directs the data collection and analysis VM executed on the local device to display the set of data in the UI.
[0106] After the virtual desktop VM has performed the set of actions, process 600 forwards (at 620) an updated rendered image of the local device's UI to the remote user. In order for the remote user to view the local device's UI as if the remote user were interacting directly with resources on the local device, the micro-agent forwards an updated rendered image of the local device's UI each time the virtual desktop VM performs a set of actions (as directed by the remote user's interaction with the rendered image of the UI).
[0107] Next, process 600 determines (at 625) whether an end session notification has been received from the remote user. In some embodiments, the remote user notifies the micro-agent when he or she wishes to end his or her session with the virtual desktop VM. If process 600 determines that an end session notification has not been received, process 600 returns to step 610 to determine whether an interaction notification has been received.
[0108] If process 600 determines that an end session notification has been received from the remote user, process 600 ends (at 630) the session between the virtual desktop VM and the remote user. In some embodiments, the micro-agent notifies the virtual desktop VM that the remote user has ended their session, and the micro-agent ends the remote user's access to the virtual desktop VM. After ending the session between the virtual desktop VM and the remote user, process 600 ends.
[0109] As previously discussed, in some embodiments, a remote user accesses a virtual desktop VM of a local device in a vehicle in order to view and analyze data collected and stored at the vehicle. Figure 7 Conceptually illustrates a process 700 of some embodiments for controlling a collection and analysis VM of a local device in a vehicle under the direction of a remote user using the remote device. In some embodiments, the process 700 is performed by a virtual desktop VM executed on a local device for allowing remote use of a VM of the local device (e.g., Figure 2 Virtual Desktop VM 270 or Figure 4 In some embodiments, process 700 is performed after the remote user has been authenticated (eg, by a micro-agent module of a local device) so that the remote user has been authorized to access the virtual desktop VM.
[0110] Process 700 begins by receiving (at 705) a session initiation message allowing a remote user to access a data collection and analysis VM on a local device. In some embodiments, the virtual desktop VM receives a notification (e.g., from a micro-agent module of the local device) notifying the virtual desktop VM that the remote user is allowed to access a VM executing on the local device that performs data collection and analysis.
[0111] Next, process 700 generates (at 710) and forwards to the remote user a first rendered image of the UI of the local device. In some embodiments, in order for the remote user to view the UI of the local device, the virtual desktop VM generates a rendered image of the UI to be forwarded to the remote user via a network (e.g., SD-WAN). In such embodiments, the rendered image is forwarded to the remote user rather than the data collected at the vehicle because the rendered image is much smaller and will take less time to be forwarded to the remote user's device. The first rendered image shows the remote user the UI of the local device, enabling the remote user to view the UI of the local device and the data collection and analysis VM as if the VM were executing directly on the remote device.
[0112] At 715, process 700 receives a first set of actions from a remote user to view a specific set of data using the data collection and analysis VM. In some embodiments, the virtual desktop VM receives a set of actions that the remote user has directed to be performed on the local device from a micro-agent module of the local device. In some embodiments, the virtual desktop VM receives the actions to direct the data collection and analysis VM to display a specific set of data collected at the vehicle.
[0113] Then, process 700 performs (at 720) a first set of actions on the data collection and analysis VM. In some embodiments, as directed by the first set of actions, the virtual desktop VM directs the data collection and analysis VM to retrieve the specific set of data from the data storage device and present the specific set of data in the UI of the local device. In some embodiments, the specific set of data is stored in a local storage device of the local device. In other embodiments, the specific set of data is stored in a data storage device (e.g., a secure SSD) connected to the local device.
[0114] After performing the first set of actions on the data collection and analysis VM, process 700 generates (at 725) and forwards to the remote user a second rendered image of the UI of the local device. The second rendered image includes the local device UI after the data collection and analysis VM has displayed the specific set of data in the UI. When forwarding the second rendered image displaying the specific set of data, the remote user is able to view the specific set of data without the virtual desktop VM actually forwarding the specific set of data to the remote user.
[0115] Next, process 700 receives (at 730) a second set of actions from the remote user to analyze the set of specific data using the data collection and analysis VM. In some embodiments, this second set of actions is received after the micro-agent module of the local device receives an interaction notification from the remote user when the remote user interacts with the second rendered image. At 735, process 700 performs the second set of actions on the data collection and analysis VM. In some embodiments, as directed by the second set of actions, the virtual desktop VM directs the data collection and analysis VM to analyze the set of specific data to generate a set of analysis results.
[0116] After performing the second set of actions on the data collection and analysis VM, process 700 generates (at 740) and forwards to the remote user a third rendered image of the UI of the local device. The third rendered image includes the local device UI after the data collection and analysis VM has analyzed the particular set of data and presented the analysis results in the UI. When forwarding the third rendered image presenting the analysis results, the remote user is able to view the analysis results without the virtual desktop VM actually forwarding the analysis results to the remote user.
[0117] Next, process 700 receives (at 745) from the remote user a third set of actions to store analysis results of the particular set of data using the data collection and analysis VM. In some embodiments, this third set of actions is received after the micro-agent module of the local device receives an interaction notification from the remote user when the remote user interacts with the third rendered image.
[0118] Finally, process 700 performs (at 750) a third set of actions on the data collection and analysis VM. After the virtual desktop VM has been booted by the remote user to store the analysis results, the virtual desktop VM boots the data collection and analysis VM to store the analysis results. In embodiments where the set of specific data is stored on the local device, the virtual desktop VM boots the data collection and analysis VM to also store the analysis results on the local device. In embodiments where the set of specific data is stored on a data storage device connected to the local device, the virtual desktop VM boots the data collection and analysis VM to store the analysis results on the data storage device. After performing the third set of actions on the data collection and analysis VM, process 700 ends.
[0119] By allowing remote users to access local devices through a virtual desktop VM, remote users are able to view and analyze data stored at the vehicle without actually forwarding the data to the remote user. This allows data-intensive operations to be performed faster on the virtual desktop than if the data were forwarded to a remote device. By instantiating a virtual desktop VM on a device in the vehicle, users local to the vehicle and remote users residing in a location different from the vehicle can remotely access the vehicle's devices and use the device's virtual desktop to immediately access and operate on any large data sets collected and stored at the vehicle's hypervisor or on the virtual disk of the virtual desktop. This allows software, such as forensic analysis software, to immediately operate on the collected data and the software to be operated by a remote expert with special knowledge and skills to operate this software beyond the capabilities of personnel in the local vehicle.
[0120] Figure 8 The diagram illustrates an exemplary vehicle device 800 accessed by a remote device 810 via a network 820. In this example, the vehicle device 800 includes a hypervisor 830, a virtual desktop VM 832 executing a micro-agent 834, a data collection and analysis VM 836, and a UI 838. In some embodiments, the hypervisor 830 configures the virtual desktop VM 832, the micro-agent 834, and the data collection and analysis VM 836, and executes a process similar to Figure 2 In some embodiments, the vehicle 800 is connected to an edge router (not shown) in the vehicle to communicate with the remote device 810 via the network 820. In some embodiments, the remote device is connected to a different edge router (not shown) to communicate with the vehicle device 800 via the network 820. In other embodiments, the remote device 810 includes a software edge forwarding element (e.g., a software edge router or gateway) (not shown) to communicate with the vehicle device 800 via the network 820.
[0121] The virtual desktop VM 832 is configured on the vehicle device 800 to provide remote use of the data collection and analysis VM 836, which is facilitated by the micro-agent 834. Although one data collection and analysis VM 836 is illustrated in this figure, those skilled in the art will understand that any number of VMs may be executed on the vehicle device 800 for performing data collection and analysis. Although the micro-agent 834 is illustrated in this figure as operating within the virtual desktop VM 832, those skilled in the art will understand that the connection broker module may alternatively be executed on the vehicle device 800 to facilitate the interaction between the virtual desktop VM 832 and the remote device 810.
[0122] The vehicle device UI 838 executes on the vehicle device 800 to enable a local user (i.e., a user of the vehicle) to use the data collection and analysis VM 836. In some embodiments, the user of the vehicle uses the data collection and analysis VM 836 through the UI 838 to collect data at the vehicle location. The data collected at the vehicle is stored in a data storage device 840 located in the vehicle and connected to the vehicle device 800. In some embodiments, the data storage device 840 is a secure SSD. Other information of the secure SSD will be described below.
[0123] The remote device 810 interacts with the virtual desktop VM 832 when authenticated by the micro-agent 834 in order to remotely use the data collection and analysis VM 836. In some embodiments, the UI 850 of the remote device presents a simulated vehicle device UI 852 and a simulated data collection and analysis VM 854. The simulated vehicle device UI 852 is a rendered image of the vehicle device UI 838 that is forwarded to the remote device 810 via the network 820. The simulated data collection and analysis VM 854 is a rendered image of the data collection and analysis VM 836 as it is displayed in the vehicle device UI 838. Using these rendered images of the vehicle device UI 838 and the data collection and analysis VM 836, the user of the remote device 810 interacts with the simulated vehicle device UI 852 and the simulated data collection and analysis VM 854 to remotely control the vehicle device UI 838 and the data collection and analysis VM 836.
[0124] Due to the virtual desktop VM 832 and micro-connection agent 834 instantiated on the vehicle device 800, from the perspective of the remote user, its remote device 810 displays the UI 838 and VM 836 of the vehicle device 800 and allows the remote user to control the UI 838 and VM 836. By remotely controlling the UI 838 and VM 836, the remote user is able to remotely view and analyze data stored in the data storage device 840 without actually forwarding the data to the remote device 810 via the network 820.
[0125] Fig. 9 Conceptually illustrates a process 900 of some embodiments for remotely performing data analysis on a set of data collected using a first device operating in a vehicle at a first location. In some embodiments, the process 900 is performed by a remote second device (e.g., Figure 8In some embodiments, the remote device resides in a first location with the vehicle. In other embodiments, the remote device resides in a remote second location. In some embodiments, the network is an SD-WAN that connects the first device to the remote second device.
[0126] In some embodiments, this connection is achieved using a set of wireless network links of an edge router executed in the vehicle. The wireless network links may be provided by any number of cellular providers. The edge router may be an edge router appliance, an edge router executed on a computer (e.g., a first device) operating in the vehicle, or an edge router executed on a machine executed on a computer in the vehicle. In some embodiments, the remote second device resides in a remote location (e.g., at a branch site of the SD-WAN) and includes a software forwarding element (e.g., a software router or gateway) connected to the SD-WAN. In other embodiments, the remote second device resides in a branch site of the SD-WAN, which includes an edge router that connects the remote second device to the SD-WAN.
[0127] Process 900 begins with a request (at 905) for remote access to a virtual desktop VM executing on a first device. In some embodiments, the remote second device sends a data message (e.g., an API request) to a micro-agent module configured within the virtual desktop VM to authenticate the remote user before the remote user is allowed to access the virtual desktop VM. Alternatively, in other embodiments, the remote second device sends the data message to a connection proxy module configured on the first device. In some embodiments, the request data message includes a set of authentication credentials for causing the micro-agent module or the connection proxy module to authenticate the remote user and / or the remote second device. For example, in some embodiments, the set of authentication credentials includes a username and password of the remote user. In other embodiments, the set of authentication credentials includes a MAC address and / or an IP address associated with the remote second device in combination or alternatively.
[0128] Next, process 900 determines (at 910) whether remote access of the virtual desktop VM is successful. In some embodiments, the remote second device determines whether it has received a remote access success message or a remote access failure message from the micro-agent module or the connection agent module. In some embodiments, the micro-agent module or the connection agent module notifies the remote second device in a data message (e.g., in an API message) whether the set of authentication credentials received for the remote user and / or the remote second device has been successfully authenticated for remote use of the virtual desktop VM.
[0129] If the process 900 determines that the remote access of the virtual desktop VM is unsuccessful (i.e., the remote second device has received a remote access failure message from the micro-agent module or the connection proxy module), the process 900 ends. If the process 900 determines that the remote access of the virtual desktop VM is successful (i.e., the remote second device has received a remote access success message from the micro-agent module or the connection proxy module), the process 900 continues to receive (at 915) a first rendered image of the UI of the first device. In some embodiments, the remote second device receives the first rendered image of the UI of the first device from the micro-agent module or the connection proxy module so that the remote user can view the data collection and analysis second VM on the first device. The first rendered image is generated by the virtual desktop VM in some embodiments and by the micro-agent module or the connection proxy module in other embodiments.
[0130] Next, process 900 directs (at 920) the data collection and analysis second VM executed on the first device to retrieve and display a specific set of data stored at the vehicle. In some embodiments, on the remote second device, the remote user interacts with the first rendered image, for example, using keyboard selections and mouse clicks. In such embodiments, these interactions are forwarded to a micro-agent module or a connection agent module, and the micro-agent module or the connection agent module converts the interactions into actions for the virtual desktop VM to perform on the UI of the first device. When interacting with the first rendered image, the remote second device directs the second VM to retrieve and display the specific set of data.
[0131] At 925, process 900 receives a second rendered image of the UI of the first device. After the virtual desktop first VM receives an action to be performed on the UI of the first device (according to the remote user's interaction with the first rendered image), the virtual desktop VM directs the data collection and analysis second VM to retrieve and display the set of specific data in the UI of the first device. In some embodiments, the data collection and analysis second VM retrieves the set of specific data from a local data storage device on the first device. In other embodiments, the data collection and analysis second VM retrieves the set of specific data from a data storage device (e.g., a secure SSD) that resides in a vehicle and is connected to the first device.
[0132] In some embodiments, the second rendered image displays the set of specific data, enabling the remote user to view the set of specific data. Then, process 900 determines (at 930) a set of analysis results based on the set of specific data displayed in the second rendered image. In some embodiments, the remote user is able to view the set of specific data and determine the set of analysis results based solely on the viewing. For example, in some embodiments, the set of specific data displayed is an evidence photo taken at a first location, and the remote user determines the analysis results of the photo by determining what is displayed in the photo. In other embodiments, a remote user using a remote device directs a virtual desktop first VM: (1) directs a data collection and analysis second VM to analyze the set of specific data to generate the set of analysis results, (2) generates a third rendered image displaying the analysis results, and (3) forwards the third rendered image to a remote second device.
[0133] Finally, process 900 directs (at 935) the data collection and analysis second VM to record the set of analysis results of the set of specific data. In an embodiment in which the remote user directly generates the set of analysis results, the remote second device forwards the set of analysis results to the first device so that the data collection and analysis second VM records the set of specific data in the same data storage device (i.e., the local storage device of the first device or the storage device of the vehicle) where the set of specific data is stored. In combination or alternatively, the remote second device stores the set of analysis results in a storage device local to the remote second device, such as in a data storage device of the remote second device or in a data storage device connected to the remote second device.
[0134] In an embodiment where the remote second device directs the data collection and analysis second VM to generate the set of analysis results, the remote second device interacts with the third rendered image to direct the data collection and analysis second VM to store the set of analysis results in the same data storage device (i.e., the local storage device of the first device or the storage device of the vehicle) storing the set of specific data. After storing the set of analysis results, process 900 ends.
[0135] In some embodiments, to ensure that data collected and stored at the vehicle is not lost, the data and all data collection and analysis operations are replicated to a different location, such as a remote data center, cloud location, or central data repository. Fig.10 The illustration shows a vehicle 1000 collecting data and storing data at both the vehicle 1000 and a remote location 1010 .
[0136] Vehicle 1000 includes a device 1020 that executes a hypervisor 1022, a group of VMs 1024, a connection broker 1026, and a group of one or more virtual desktop VMs 1028-1029. Hypervisor 1022 configures each component of device 1020 (similar to Figure 2 The set of VMs 1024 includes one or more VMs for performing various operations such as data collection and data analysis. Virtual desktop VMs 1028-1029 execute on device 1020 to provide remote access to device 1020 and VMs 1024. Connection broker 1026 facilitates interaction between virtual desktop VMs 1028-1029 and remote devices (similar to Figure 2 In other embodiments, instead of executing one connection agent 1026 for the group of virtual desktop VMs 1028 to 1029, a different micro-agent module is executed within each virtual desktop VM 1028 to 1029 to facilitate the interaction between its virtual desktop VM and the remote device.
[0137] The vehicle 1000 also includes a set of one or more data storage devices 1030 that store data collected at the vehicle 1000. In some embodiments, data analysis results generated from the collected data are also stored on the data storage devices 1030. For example, in some embodiments, a remote user accessing VM 1024 through one of the virtual desktop VMs 1028-1029 analyzes a set of collected data and directs one or more of VMs 1024 to store the analysis results on the data storage device 1030. In some embodiments, the collected data and the analysis results are stored on different data storage devices 1030. In other embodiments, the collected data and its associated analysis results are stored on the same storage device 1030.
[0138] Each of the virtual desktop VMs 1028-1029 is configured (in some embodiments, by the hypervisor 1022) with a synchronization agent #1040-1041. The synchronization agents 1040-1041 run within the virtual desktop VMs 1028-1029 to replicate all data, data collection and analysis operations, and analysis results occurring at the vehicle 1000 to a remote site. In such embodiments, the agent 1040 copies all data and analysis results stored on the data storage device 1030 and forwards it to the connection agent 1026. The connection agent 1026 provides all this information to the vehicle's edge router 1050, which forwards the information along one or more wireless network links 1055 to a remote data storage device 1060 residing at the remote site 1010.
[0139] In some embodiments, the remote site 1010 is a cloud site and the remote data storage device 1060 is a cloud data storage device. In other embodiments, the remote site 1010 is a remote data center site and the remote data storage device 1060 is a data storage device that resides at the data center site. By copying all data and analysis results from the data storage device 1030 in the vehicle 1000 to the remote data storage device 1060, the synchronization agents 1040-1041 ensure that there is a copy of all vehicle collected and analyzed data in a secure location.
[0140] In some embodiments, because data collected at the vehicle can be accessed remotely through the virtual desktop VM, some embodiments store the data at the vehicle on a secure SSD to prevent unauthorized users from accessing the data. Fig.11 Conceptually illustrating some embodiments of a process 1100 for securely storing data and analysis results in a vehicle. In some embodiments, the process 1100 is performed by a hypervisor of a first device that (1) executes a virtual desktop VM for remote use of the first device and (2) connects to a data storage second device (e.g., Figure 2 Management program 250, Figure 8 Hypervisor 830 or Fig.10 management program 1022).
[0141] Process 1100 begins by configuring (at 1105) the agent module to authorize access to a first device via a virtual desktop VM instantiated on the first device. Figure 1 In steps 115 and 120, the hypervisor in some embodiments configures micro-agent software, modules or applications on the virtual desktop VM to authenticate remote users for accessing the virtual desktop VM and facilitate interaction between authorized remote users and the virtual desktop VM. In other embodiments, the hypervisor configures a connection proxy module on the first device to authenticate remote users based on the virtual desktop VM.
[0142] Next, process 1100 configures (at 1110) a synchronization agent on the virtual desktop VM to copy all data stored on the data storage second device to the remote location. To ensure that all data stored at the vehicle is not lost, in some embodiments, the hypervisor configures the synchronization agent (e.g. Fig.10 The remote location is a cloud location. In other embodiments, the remote location is a cloud location.
[0143] At 1115, the process 1100 maintains secure data storage on a data storage second device connected to a first device in a vehicle. In some embodiments, the data storage second device is a secure SSD to more securely store data collected at the vehicle and analysis results of the collected data. At 1120, the process 1100 determines whether potential unauthorized access to the data storage second device has been detected. In some embodiments, the hypervisor monitors the data storage second device to detect when an unauthorized remote user accesses data stored on the second device. In some embodiments, the hypervisor communicates with the agent module to determine whether all remote users currently accessing any VM of the first device (i.e., through a virtual desktop VM) have been authenticated by the agent module.
[0144] If the process 1100 determines that potential unauthorized access to the data storage second device has not been detected, the process 100 returns to step 1115 to continue to maintain secure data storage on the data storage second device. If the process 1100 determines that potential unauthorized access to the data storage second device has been detected, the process 1100 deletes (at 1125) all data from the data storage second device. In order to prevent unauthorized remote users from accessing data collected at the vehicle, when the hypervisor detects that potential unauthorized access to the data has occurred, the hypervisor deletes all data stored on the data storage second device. However, the data is not completely lost because the hypervisor has configured the synchronization agent to copy the data from the data storage second device to the remote site. Since in some embodiments, the hypervisor copies all data stored at the vehicle to the remote site, the hypervisor can delete all data stored at the vehicle to prevent unauthorized access to the data without completely losing the data.
[0145] Finally, process 1100 sends (at 1130) a notification directing the detected potential unauthorized access to the data storage second device to one or more authorized users of the first device. In some embodiments, the hypervisor directs an agent module that maintains a list of authorized users of the first device (e.g., for authenticating remote users) to send the notification to all authorized users of the first device. In conjunction with or in lieu thereof, the hypervisor presents the notification of the detected potential unauthorized access to a local user of the vehicle in a UI of the first device.
[0146] This notification is used to notify all authorized users of the detected potential unauthorized access to the data storage second device so that the authorized users can take action to mitigate the potential unauthorized access. After sending the notification, the process 1100 returns to step 1115 to continue to maintain secure data storage on the data storage second device. In some embodiments, the process 1100 is executed indefinitely. In other embodiments, the process 1100 ends, for example, when the vehicle (and subsequently the management program) is powered off.
[0147] Some embodiments allow remote interaction with locally collected data sets by using an in-vehicle virtual desktop to collect and analyze data. The use of a virtual desktop in conjunction with an SD-WAN ensures reliable remote access to data with sufficient bandwidth to produce a good user experience, but results in a multi-carrier, multi-LTE configuration. In some embodiments, this ensures that no matter where the vehicle is located and even if the vehicle is in motion traversing unexpected areas where one or more carriers have weak signals, there is coverage with sufficient multi-connection spanning bandwidth. Without using a multi-carrier wireless network link to connect the vehicle to the SD-WAN, some embodiments experience a highly unreliable user experience due to the coverage and bandwidth challenges that single carrier and single connection embodiments would bring.
[0148] In some embodiments, a device operating in a vehicle using a virtual desktop for remote use is connected to a secure SSD for storage of data collected at the vehicle. In such embodiments, the remotely accessed device is able to securely store sensitive data (e.g., forensic data collected by a police vehicle) at the vehicle while still protecting the sensitive data from unauthorized access. In addition, some embodiments instantiate a synchronization agent within the virtual desktop VM that replicates data collection and analysis operations to a designated remote data center, cloud location, or central data repository of the SD-WAN. This ensures that data collected and analyzed at the vehicle is not lost.
[0149] In some embodiments, the device executing the virtual desktop in the vehicle is a mobile device that can be removed from the vehicle and taken to another location. For example, when data needs to be collected for a crime scene, in some embodiments, the mobile device is removed from the vehicle to collect the data. After the data has been collected, the mobile device and the data it has collected can be accessed remotely because the virtual desktop is instantiated on the mobile device.
[0150] In some embodiments, when a remote user is accessing a device in a vehicle, the device will shut down when the vehicle is shut down. In such embodiments, the device's hypervisor detects when the vehicle is shut down (i.e., the power is turned off by the user of the vehicle), and notifies the remote user when the device is powered off to save their work before losing it. Upon receiving this message from the hypervisor, in some embodiments, the remote user sees a countdown application on their UI that displays a virtual desktop of the vehicle device, which lets the remote user know how much time the remote user has to save their work before they will lose access to the vehicle device. By performing data collection and analysis as described above, remote users are able to interact with the collected data at the "mobile edge" of the network. Specifically, remote users can access the collected data immediately, while securely storing the collected data to protect against threats and synchronizing the collected data to a secure remote location using the speed and reliability of the wireless network link of the SD-WAN.
[0151] Although the above embodiments have been described with respect to the collection and analysis of data, for vehicles that collect data that requires analysis (such as police vehicles and first response vehicles), technicians in the field will understand that any type of vehicle can be deployed with a device that executes a virtual desktop VM to remotely access any type of VM or application.
[0152] Many of the features and applications described above are implemented as software processes that are specified as a set of instructions recorded on a computer-readable storage medium (also referred to as a computer-readable medium). When these instructions are executed by one or more processing units (e.g., one or more processors, processor cores, or other processing units), the instructions cause the processing units to perform the actions directed in the instructions. Examples of computer-readable media include, but are not limited to, CD-ROMs, flash drives, RAM chips, hard drives, EPROMs, etc. Computer-readable media do not include carrier waves and electronic signals transmitted wirelessly or via wired connections.
[0153] In this specification, the term "software" is intended to include firmware residing in a read-only memory or an application stored in a magnetic storage device, which can be read into a memory for processing by a processor. In addition, in some embodiments, multiple software inventions can be implemented as sub-parts of a larger program while maintaining different software inventions. In some embodiments, multiple software inventions can also be implemented as separate programs. Finally, any combination of separate programs that implement the software inventions described herein together is within the scope of the present invention. In some embodiments, when a software program is installed to operate on one or more electronic systems, the software program defines one or more specific machine implementations that implement and execute the operations of the software program.
[0154] Fig.12 A computer system 1200 is conceptually illustrated that is utilized to implement some embodiments of the present invention. The computer system 1200 may be used to implement any of the computers and servers described above. As such, the computer system may be used to perform any of the processes described above. This computer system includes various types of non-transitory machine-readable media and interfaces for various other types of machine-readable media. The computer system 1200 includes a bus 1205, a processing unit 1210, a system memory 1225, a read-only memory 1230, a permanent storage device 1235, an input device 1240, and an output device 1245.
[0155] Bus 1205 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of computer system 1200. For example, bus 1205 communicatively connects processing unit 1210 with read-only memory 1230, system memory 1225, and permanent storage 1235.
[0156] The processing unit 1210 retrieves instructions to be executed and data to be processed from these different memory units in order to perform the processes of the present invention. In different embodiments, the processing unit may be a single processor or a multi-core processor. Read-only memory (ROM) 1230 stores static data and instructions required by the processing unit 1210 and other modules of the computer system. On the other hand, permanent storage 1235 is a read-write memory device. This device is a non-volatile memory unit that stores instructions and data even when the computer system 1200 is turned off. Some embodiments of the present invention use a mass storage device (such as a magnetic disk or optical disk and its corresponding disk drive) as permanent storage 1235.
[0157] Other embodiments use removable storage devices (e.g., flash drives, etc.) as permanent storage devices. Like permanent storage device 1235, system memory 1225 is a read-write memory device. However, unlike storage device 1235, system memory is a volatile read-write memory, such as random access memory. System memory stores some instructions and data that the processor needs at run time. In some embodiments, the processes of the present invention are stored in system memory 1225, permanent storage device 1235, and / or read-only memory 1230. Processing unit 1210 retrieves instructions to be executed and data to be processed from these various memory units in order to perform the processes of some embodiments.
[0158] The bus 1205 is also connected to input devices 1240 and output devices 1245. Input devices enable a user to communicate information and select commands to the computer system. Input devices 1240 include an alphanumeric keyboard and a pointing device (also called a "cursor control device"). Output devices 1245 display images generated by the computer system. Output devices include printers and display devices, such as cathode ray tubes (CRTs) or liquid crystal displays (LCDs). Some embodiments include devices such as touch screens that function as both input devices and output devices.
[0159] Finally, if Fig.12 As shown in FIG. 1 , bus 1205 also couples computer system 1200 to a network 1265 through a network adapter (not shown). In this manner, the computer may be part of a network of computers (e.g., a local area network ("LAN"), a wide area network ("WAN"), or an intranet, or a network of several networks, such as the Internet). Any or all components of computer system 1200 may be used in conjunction with the present invention.
[0160] Some embodiments include electronic components, such as microprocessors, storage devices, and memories, that store computer program instructions in machine-readable or computer-readable media (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media). Some examples of such computer-readable media include RAM, ROM, compact disk-read only (CD-ROM), compact disk-recordable (CD-R), compact disk-rewritable (CD-RW), read-only digital versatile disk (e.g., DVD-ROM, double-layer DVD-ROM), various recordable / rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD card, mini SD card, micro SD card, etc.), magnetic and / or solid-state hard drives, read-only and recordable CDs, ultra-density CDs, and any other optical or magnetic media. Computer-readable media can store computer programs that can be executed by at least one processing unit and contain sets of instructions for performing various operations. Examples of computer programs or computer code include machine code (such as produced by a compiler), and files containing higher-level code that are executed by a computer, electronic component, or microprocessor using an interpreter.
[0161] Although the above discussion mainly refers to microprocessors or multi-core processors that execute software, some embodiments are performed by one or more integrated circuits such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In some embodiments, such integrated circuits execute instructions stored on the circuits themselves.
[0162] As used in this specification, the terms "computer", "server", "processor" and "memory" all refer to electronic or other technical devices. These terms do not include people or groups of people. For the purposes of this specification, the terms display or displaying mean displaying on an electronic device. As used in this specification, the terms "computer-readable medium (medium)", "computer-readable medium (media)" and "machine-readable medium" are entirely limited to tangible physical objects that store information in a computer-readable form. These terms do not include any wireless signals, wired download signals and any other transient or temporary signals.
[0163] Although the present invention has been described with reference to numerous specific details, those skilled in the art will recognize that the present invention can be embodied in other specific forms without departing from the spirit of the present invention. Therefore, those skilled in the art will understand that the present invention is not limited by the foregoing illustrative details, but is defined by the appended claims.
Claims
1. A method for remotely performing data analysis on a set of data collected using a first device operating in a vehicle at a first location, the method comprising: At a remote second device used by a remote user at a remote second location: accessing via a network a first VM executing on the first device, the first VM enabling remote use of a second VM executing on the first device to generate analysis results of data collected and stored at the vehicle; and Use the first VM to (i) direct the second VM to analyze the set of data to generate a set of analysis results, (ii) generate a rendered image showing the set of analysis results, and (iii) forward the rendered image to the remote second device via the network for the remote user to view the set of analysis results. 2 . The method of claim 1 , wherein the first VM is a virtual desktop VM executed on the first device.
3. The method of claim 2, wherein the second VM is a data collection and analysis VM executed on the first device, the data collection and analysis VM being accessible by remote devices including the remote second device through the virtual desktop VM.
4. The method according to claim 3, wherein: the rendered image being a first rendered image, The virtual desktop VM provides a second rendered image of a user interface UI of the first device, and using the virtual desktop VM to guide the data collection and analysis VM includes interacting with the second rendered image to guide the data collection and analysis VM to generate the set of analysis results. 5 . The method of claim 4 , wherein the UI of the first device is a first UI and the second rendered image includes the set of data to be viewed on a second UI of the remote second device. 6 . The method of claim 4 , further comprising using the virtual desktop VM to direct the data collection and analysis VM to store the set of analysis results at the vehicle.
7. The method of claim 1, wherein the first VM executes a micro-agent module configured to facilitate interaction between the remote user and the first VM.
8. The method of claim 7, further comprising, before accessing the first VM: Sending a first data message to the micro-agent module requesting access to the first VM; and A second data message is received from the micro-agent module allowing access to the first VM.
9. The method of claim 8, wherein the micro-agent module allows access to the first VM based on a set of user authentication credentials associated with the remote user.
10. The method of claim 9, wherein the set of user authentication credentials comprises a username and password associated with the remote user.
11. The method of claim 10, wherein the micro-agent module further allows access to the first VM based on a set of device authentication credentials associated with the remote second device. 12 . The method of claim 11 , wherein the set of device authentication credentials comprises at least one of a Media Access Control (MAC) address and an Internet Protocol (IP) address of the remote second device.
13. The method of claim 1, wherein the first device executes a connection broker module configured to facilitate interaction between the remote user and the first VM.
14. The method of claim 1, wherein the network is a software defined wide area network (SD-WAN), and accessing the first VM via the network comprises accessing the first VM using a set of one or more wireless network links associated with an edge router in the vehicle, the edge router connecting the vehicle to the SD-WAN.
15. The method of claim 14, wherein the set of wireless network links comprises at least two wireless network links provided by at least two different service providers.
16. The method of claim 14, wherein the edge router is one of: (i) an edge router appliance, (ii) an edge router executing on a computer operating in the vehicle, or (iii) an edge router executing on a machine executing on the computer.
17. The method of claim 1, wherein the data comprising the set of data is stored on a set of data storage devices of the first device.
18. The method of claim 1, wherein the data comprising the set of data is stored on a specific storage device connected to the first device. The method according to claim 18 , wherein the specific storage device is a secure solid state drive (SSD).
20. A non-transitory machine-readable medium storing a program for execution by at least one processing unit for remotely performing data analysis on a set of data collected using a first device operating in a vehicle at a first location, the program comprising a set of instructions for: At a remote second device used by a remote user at a remote second location: accessing via a network a first VM executing on the first device, the first VM allowing remote use of a second VM executing on the first device to generate analysis results of data collected and stored at the vehicle; and Use the first VM to (i) direct the second VM to analyze the set of data to generate a set of analysis results, (ii) generate a rendered image showing the set of analysis results, and (iii) forward the rendered image to the remote second device via the network for the remote user to view the set of analysis results.