Configuring virtual desktop for data analysis in vehicle device

By being institutionalized in the vehicle, the virtual desktop is allowed to allow remote users to analyze and process data collected in the vehicle, solve the problem that data in the existing technology cannot be remotely analyzed in a timely manner, and achieve efficient evidence processing and criminal reports.

CN119376849APending Publication Date: 2025-01-28VMWARE INC
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
CN202411003595.6
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

Technical Problem

The data collected in vehicles in prior art cannot be analyzed remotely in a timely manner, resulting in loss of evidence and a lower rate of crime reporting.

Method used

By being institutionalized in the vehicle, the virtual desktop allows remote users to interact with the virtual desktop in the vehicle through the network to achieve remote analysis and processing of collecting data in the vehicle.

Benefits of technology

The data collected by the vehicle's instant remote analysis and processing of the vehicle was realized, and the data transmission delay was avoided, and the evidence reservation rate and the efficiency of criminal reports were improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119376849A_ABST
    Figure CN119376849A_ABST
Patent Text Reader

Abstract

The disclosure relates to configuring a virtual desktop for data analysis in a vehicle device. Some embodiments provide a novel method for analyzing data collected by a vehicle at a first location. On a first device operating in the 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 to locally use 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 over a network to cause the remote user to access the data collection second VM to analyze the set of data without having to forward the set of data over the network to the remote second device.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS REFERENCE TO RELATED APPLICATIONS

[0002] This application claims the benefit of U.S. Provisional Application No. 63 / 528,698, filed on July 25, 2023, and entitled “CONFIGURING A VIRTUAL DESKTOP IN A VEHICLE DEVICE FOR DATA ANALYTICS,” the entire teachings of which are incorporated herein by reference for all purposes. Technical Field

[0003] The present disclosure relates to configuring a virtual desktop for data analysis in a vehicle device. Background Art

[0004] Commercial vehicles (e.g., first responder vehicles and police cars) are being transformed into mobile micro data centers, where hypervisor platforms integrate multiple applications and perform real-time data collection and analysis operations to speed up the time to respond to crimes (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 large data transmissions from one location (e.g., a vehicle) to another location (e.g., a cloud or a remote data center) in a timely manner. In view of this, the various forms of large data collected at the vehicle cannot be immediately observed by others outside the vehicle. This delays analysis (1) until the vehicle is parked in a garage or (2) until the slow transmission of the large data to the remote location has been completed.

[0005] For example, images captured from a crime victim's cell phone after the crime is reported are often held as evidence and stored for months until the process of imaging the cell phone and transmitting its data to the appropriate police location is complete. This problem leads to a significant reduction in the incidence of victims reporting such crimes to the police due to fear of 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 such 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 the 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 over 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 over the network.

[0007] In some embodiments, the method is performed by a hypervisor of the first device. In some embodiments, the hypervisor also configures a micro-agent module within the virtual desktop VM to authenticate the remote user and facilitate the 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 the 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 conjunction 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 that includes records for authorized remote users and their usernames and passwords and records for authorized remote devices and their MAC and IP addresses.

[0008] Instead of configuring a micro-agent module within the virtual desktop VM, other embodiments configure a connection proxy module on the first device to authenticate the remote user and facilitate the interaction between the virtual desktop VM and the remote user. In such embodiments, the connection proxy module is capable of authenticating 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 indicate 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 (e.g., VMs, applications, stored data) of the first device. In some of these embodiments, the resources on the first device to which 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 data collected and stored at the vehicle without having to forward the data to the 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 a remote data storage device. This ensures that in the event of a loss of data 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 site. In other embodiments, the remote data storage device is a data center data storage device at a remote data center site.

[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 the first device. In such an embodiment, the remote user is a first remote user, and the hypervisor detects unauthorized access to the 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 an authorized remote user.

[0013] In some embodiments, the network over which the virtual desktop VM communicates 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 the 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 device, (2) an edge router executed on a computer operating in the vehicle, or (3) an edge router executed on a machine executing on the computer. This computer is the first device in some embodiments and is a different computer in other embodiments. 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 over a network, 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 over 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 that can be accessed by a remote device 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 to use the remote second device to guide the second VM to produce the analysis results. In other embodiments, the 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 are stored at the vehicle so that they can be forwarded to another device in the future. In some embodiments, before accessing the first VM, the method sends a first data message requesting access to the first VM to the micro-agent module of the first device. 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 through which the remote second device accesses and uses 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 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.

[0022] In some embodiments, the edge router is one of: (1) an edge router device, (2) an edge router executed on a computer operating in the vehicle, or (3) an edge router executed on a machine executing on the computer. This computer is the first device in some embodiments, and is a different computer in other embodiments. In some embodiments, the data comprising the set of data is stored on a set of data storage devices of the first device. In other embodiments, the data comprising the set of data is stored on a specific storage device connected to the first device. In such an embodiment, the specific storage device is a secure SSD, which helps maintain secure storage of the 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 the subject matter of the invention 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 the embodiments described by this document, a comprehensive reading of the summary, the detailed description, the drawings and the claims is required. In addition, the claimed subject matter is not limited by the illustrative details in the summary, the detailed description and the 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 1A process of some embodiments for enabling remote access to a first device operating in a vehicle residing at a first location is conceptually illustrated.

[0026] Figure 2 An example vehicle including components managed and configured by a set of managers and controllers is described.

[0027] Figure 3 An instance vehicle that communicates with the various components of the SD-WAN.

[0028] Figure 4 An example vehicle that allows remote users residing in a remote site to access machines 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 processes of some embodiments for facilitating interaction between a virtual desktop VM executing on a local device in a vehicle and a remote user accessing the virtual desktop VM on a remote device are conceptually illustrated.

[0031] Figure 7 The process of some embodiments for collecting and analyzing VMs for controlling a local device in a vehicle as directed by a remote user using a remote device is conceptually illustrated.

[0032] Figure 8 An example vehicle device accessed by a remote device over a network is described.

[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 A vehicle is described that collects data and stores the data both at the vehicle and at a remote site.

[0035] Fig.11 The process of some embodiments for securely storing data and analysis results in a vehicle is conceptually illustrated.

[0036] Fig.12 An electronic system is conceptually described with which some embodiments of the present invention are implemented. DETAILED DESCRIPTION

[0037] In the following detailed description of the invention, many details, examples and embodiments of the invention are set forth and described. However, it will be clear and apparent to those skilled in the art that the invention is not limited to the embodiments set forth, and 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 the 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 over 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 over the network.

[0039] In some embodiments, the method is performed by a hypervisor of the first device. In some embodiments, the hypervisor also configures a micro-agent module within the virtual desktop VM to authenticate the remote user and facilitate the 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 the 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 conjunction 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 that includes records for authorized remote users and their usernames and passwords and records for authorized remote devices and their MAC and IP addresses.

[0040] Instead of configuring a micro-agent module within the virtual desktop VM, other embodiments configure a connection proxy module on the first device to authenticate the remote user and facilitate the interaction between the virtual desktop VM and the remote user. In such embodiments, the connection proxy module is capable of authenticating 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 a remote data storage device. This ensures that in the event of a loss of data 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 site. In other embodiments, the remote data storage device is a data center data storage device at a remote data center site.

[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 the first device. In such an embodiment, the remote user is a first remote user, and the hypervisor detects unauthorized access to the 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 an authorized remote user.

[0044] In some embodiments, the network over which the virtual desktop VM communicates 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 the 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 device, (2) an edge router executed on a computer operating in the vehicle, or (3) an edge router executed on a machine executing on the computer. This computer is the first device in some embodiments and is a different computer in other embodiments. 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 over a network, 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 over the 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 a remote device 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.

[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 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 to use the remote second device to guide the second VM to produce the analysis results. In other embodiments, the 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, forwarding time is greatly reduced, resulting in more immediate viewing of the set of data on the remote second device.

[0050] 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 are stored at the vehicle so that they can be forwarded to another device in the future. In some embodiments, before accessing the first VM, the method sends a first data message requesting access to the first VM to the micro-agent module of the first device. 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 their use of the desktop, and (3) transmit their keyboard and mouse movements to the virtual desktop. In some embodiments, the business model of virtual desktops is asymmetric, with low bandwidth to the desktop due to 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 returns to the remote user.

[0052] When a remote user interacts with the device's virtual desktop, the remote user virtually operates the device as if they were present at the same location as the device. In view of this, in some embodiments, the remote user operates on the device's VMs, applications, and data as if they were using the device directly. In view of this, data-intensive operations, such as data streaming and analysis, can be performed remotely without having to actually forward the data to the remote user. By instantiating a virtual desktop on a device in a vehicle, remote users of some embodiments can immediately view and analyze data collected at the vehicle without having to forward the data to them.

[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 location that collects and stores data to be used by a person residing at 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 1 A process 100 of some embodiments for enabling remote access to a first device operating in a vehicle residing at a first location is conceptually illustrated. Process 100 is performed in some embodiments to enable a remote user to 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, 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 remote users to access the first device over 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 car, and a local user of the police car 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, and in other embodiments, on a specific storage device (e.g., a secure SSD) in the police car. Because the virtual desktop VM is instantiated on the first device, remote users can access the collected data and use the data collection and analysis VM to remotely view and analyze the collected data without having to forward the data to their remote device.

[0057] At 115, process 100 configures a micro-agent module on the virtual desktop VM to authenticate a remote user to use 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 executed within the virtual desktop VM to implement a virtual desktop for 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 an embodiment, 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 a remote device used by a remote user. In these embodiments, the device credentials are received in an access request. Any type of authentication credentials may be used to authenticate a 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 indicate 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 access the data collection and analysis VM and all locally collected data using a virtual desktop, but only allows a second specific remote user to access the data collection and analysis VM and a subset of locally collected data using a virtual desktop.

[0060] Next, process 100 configures (at 120) the 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 it to the remote user so that the remote user can see the first device and its resources on their remote device as if they were 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 accepts these interactions and converts them into actual actions using the virtual desktop VM, so it appears to be controlled by the remote user on the first device. 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 2 An example vehicle 200 is illustrated that includes components managed and configured by a set of managers and controllers 205. In this example, the vehicle 200 includes a device 210 and an edge router 220 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 device, an edge router executed on a computer operating in the vehicle 200, or an edge router executed on a machine executed 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 a remote user using a remote device.

[0062] In some embodiments, the manager and controller group 205 is a group of management servers implementing a management plane (MP) of the SD-WAN connected to the vehicle 200 and a group of controllers implementing a control plane (CP). 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] The vehicle 200 includes a device 210. In some embodiments, the device 210 is a computer. Although only one device 210 is drawn in this figure, it will be understood by ordinary technicians that any number of devices can be executed in the vehicle 200 and used by remote users using virtual desktops. In some embodiments, the 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. The device 210 can execute any number of machines 240 that implement any suitable type of operation (e.g., data collection, data analysis and parsing, etc.). In some embodiments, the machine 240 is at least one of a VM, a container, and a Pod. 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 guided to be performed by one or more local users of the vehicle 200 through the UI 280. Jointly or alternatively, they are performed by one or more remote users through the 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, the hypervisor 250 booted by the manager and controller group 205 instantiates and updates the machine 240 and the virtual desktop VMs 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 booting a device OS (not shown) to configure them.

[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 to be shared 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 to be shared by remote users.

[0066] In other embodiments, hypervisor 250 instantiates a different virtual desktop VM 270 for each remote user authenticated to access device 210, so that no two remote users use the same virtual desktop VM. In some of these embodiments, hypervisor 250 instantiates a new virtual desktop VM 270 after a remote user has requested access to device 210. In other embodiments, hypervisor 250 instantiates a specific set of virtual desktop VMs 270 on device 210, and after each virtual desktop VM has been associated with a remote user, hypervisor 250 then instantiates more virtual desktop VMs on device 210.

[0067] When a remote user requests access to one of the virtual desktop VMs 270 through the 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] Instead of executing different micro-agents 260 within each virtual desktop VM 270, 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. 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 has access to 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 that they used in the first session to the remote user. In some embodiments, the second session renders an image of device 210 to the remote user, exactly as the remote user left it at the end of the first session (i.e., the virtual desktop VM is a persistent virtual desktop). This allows remote users to customize their virtual desktop VMs and maintain the state of their virtual desktops across multiple sessions. In other embodiments, the second session renders 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, connection agent 260 presents 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 200). 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. Dedicating a particular data storage device to a particular VM on the device 210 allows a dedicated driver 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 of the data collected at the vehicle 200 can be performed immediately. For example, in some embodiments, a large amount of data (e.g., phone images) is collected at the vehicle 200 and stored on the data storage device 290. The remote user accesses the device 210 using the virtual desktop VM 270 and immediately views and analyzes the data without having to actually forward 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 store the analysis results 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 very efficient, reducing the number of such highly specialized technicians required to serve a large geographic area.

[0074] As previously discussed, in some embodiments, a vehicle is connected to a 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 an SD-WAN is illustrated. Any number of vehicles 1 to N may be used. Vehicles 300 and 310 include one or more computing machines 302 and 312, SD-WAN routers 304 and 314, and groups of 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., a tunnel) with an edge forwarding element (e.g., an SD-WAN edge FE 342) at a multi-machine site (e.g., an SD-WAN edge site 340 with multiple machines 345) (e.g., a branch office, a data center, etc.). These multi-machine sites are typically located in 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, one of which is a branch site 340 and one 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., an SD-WAN edge FE 342) exchanges data messages with one or more cloud gateways 320 via 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 (e.g., cable modem, 5G wireless transceiver, MPLS device, etc.). In some embodiments, two or more of the 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 the 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, in some embodiments, the edge node has one or more commercial broadband Internet links (e.g., cable modems, fiber optic links) for accessing the Internet, MPLS links for accessing the external network through the MPLS provider's network, and wireless cellular links (e.g., 5G LTE networks). 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, in some embodiments, different links 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 vehicle's SD-WAN router (1) directly through one or more links 350, or (2) through a cloud gateway or data center hub, to which the edge forwarding node is connected by two or more links 350. Therefore, in some embodiments, the edge forwarding node 342 at the branch site 340 may use multiple SD-WAN links 350 to reach the SD-WAN router (e.g., 204) 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 vehicle's SD-WAN router (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 subnet of one site to another site). Similar to 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 vehicle's SD-WAN router 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 of an edge site (e.g., edge forwarding element 342 of 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 communication 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 collection of SD-WAN forwarding nodes (e.g., forwarding element 342 and gateway 320) and secure connections 350 between forwarding nodes form a virtual network for a particular entity that spans at least a public or private cloud data center 325 to connect branch and data center sites 330 and 340.

[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, 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 received from an edge forwarding element of an entity and data message streams received along other tunnels of other entities. In other embodiments, the gateway is single-tenant and is specifically deployed for use by only one entity.

[0085] Figure 3A manager and controller cluster 360 is described, which serves as a central point for managing (e.g., defining and modifying) configuration data provided to edge nodes and / or gateways to configure some or all operations. In some embodiments, this manager and controller cluster 360 is in one or more public cloud data centers, while in other embodiments, it 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 sites 330 and 340 can access machines 302 and 312 executed on vehicles 300 and 310.

[0086] Figure 4 An example vehicle 400 is illustrated that allows remote users residing in a set of remote sites 420 and 430 to access machines 402 executed in the vehicle 400 over 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 uses a set of wireless network connection links 412 to communicate with the remote sites 420 and 430; 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 group of machines 422 and 432, respectively, and SD-WAN routers 424 and 434. In some embodiments, machine groups 422 and 432 are executed 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 a remote site or from one remote site to another remote site (e.g., providing an accessible subnet of one site to another site).

[0089] In some embodiments, remote users operating using machines 422 and 432 request access to a device's virtual desktop 404 from micro-agent 406. After authenticating the remote users and authorizing them to access virtual desktop 404, micro-agent 406 facilitates the interaction between virtual desktop 404 and the remote users. For example, a particular remote user at remote site 420 requests access to virtual desktop 404 for the purpose of analyzing data collected at vehicle 400 and stored in data storage device 414. The remote user wishes to access virtual desktop 404 over 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 virtual desktop 404 is more efficient than forwarding or uploading 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. Then, the specific remote user can 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 being allowed access to the virtual desktop VM. Figure 5 The 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 is conceptually illustrated. 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 the local device (e.g., by the local device's hypervisor) for the purpose of allowing remote access to the local device and the VM and / or application executing thereon.

[0092] In other embodiments, process 500 is performed by a connection proxy module executed on a local device but not in 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 that is operated in the vehicle, while a remote device is used herein to describe a device that is not operated in the vehicle or is not a device connected to the vehicle. For example, in some embodiments, the remote device is a mobile device that is co-located with the vehicle but is not directly connected to the vehicle and its edge router that connects the vehicle to the SD-WAN (e.g., it is a mobile computer of a person in the vehicle). These mobile devices access the vehicle's devices using a virtual desktop as well as a remote device that is operated 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 (e.g., VM, application, stored data, etc.) associated with the local device. 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, the authentication credentials are included in the request received by the micro-agent in step 505. 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 the 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 so as to authenticate each remote user to access the virtual desktop. In conjunction 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 set of retrieved authentication credentials, the micro proxy authenticates the remote user and / or remote device. In some embodiments, the micro proxy maintains a data repository (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-proxy determines that the remote user is not allowed to access the local device, the micro-proxy sends a data message (e.g., in an API) to the remote user, notifying 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 process 500 determines that the set of authentication credentials allows the remote user to access the virtual desktop VM, then 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 an embodiment, 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), at the data collection VM, and at the data analysis VM. 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) an 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 the 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 it. 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 notifications of these interactions and converts them to the virtual desktop VM that performs these actions directly on the local device. Additional information about the interaction between the virtual desktop VM and the remote device facilitated by the micro-agent is described below. After initiating the interaction between the virtual desktop VM and the remote user, process 500 ends.

[0101] Figure 6 A process 600 is conceptually illustrated for facilitating some embodiments of interaction between a virtual desktop VM executing on a local device in a vehicle and a remote user accessing the virtual desktop VM on a remote device. In some embodiments, the 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 4 In some embodiments, process 600 is performed after the micro-agent has authenticated the remote user, allowing the remote user to access at least a subset of the resources of the virtual desktop VM and 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 in 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 a 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 it 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 connecting 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), then 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 executing 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) the 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 they were interacting directly with resources on the local device, the micro-agent forwards the updated rendered image of the local device's UI each time the virtual desktop VM performs the set of actions (as indicated 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, when the remote user wishes to end their session with the virtual desktop VM, the remote user notifies the micro-agent. 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, then 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 The process 700 conceptually illustrates some embodiments of collecting and analyzing VMs for controlling a local device in a vehicle using instructions from a remote user using a remote device. In some embodiments, the process 700 is performed by a virtual desktop VM executed on a local device to allow 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 that allows 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) a first rendered image of the UI of the local device and forwards it to the remote user. 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 over a network (e.g., SD-WAN). In such embodiments, the rendered image is forwarded to the remote user instead of 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 from the remote user a first set of actions to view a specific set of data using the data collection and analysis VM. In some embodiments, the virtual desktop VM receives from the micro-agent module of the local device a set of actions that the remote user is directed to perform on the local device. In some embodiments, the virtual desktop VM receives actions that direct the data collection and analysis VM to display a specific set of data collected at the vehicle.

[0113] Next, process 700 performs (at 720) a first set of actions on the data collection and analysis VM. In some embodiments, the virtual desktop VM directed by the first set of actions directs the data collection and analysis VM to retrieve the particular set of data from the data storage device and present it in the UI of the local device. In some embodiments, the particular set of data is stored in a local storage device of the local device. In other embodiments, the particular 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) a second rendered image of the UI of the local device and forwards it to the remote user. The second rendered image includes the local device UI after the data collection and analysis VM has presented the particular set of data in the UI. When forwarding the second rendered image presenting the particular set of data, the remote user is able to view the particular set of data without the virtual desktop VM having to actually forward the particular set of data to the remote user.

[0115] Next, process 700 receives (at 730) from the remote user a second set of actions to analyze the particular set of data using the data collection and analysis VM. In some embodiments, the second set of actions is received after the micro-agent module of the local device receives a notification of the interaction 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, the virtual desktop VM indicated by the second set of actions directs the data collection and analysis VM to analyze the particular set of 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) a third rendered image of the UI of the local device and forwards it to the remote user. The third rendered image includes the local device UI after the data collection and analysis VM has analyzed the particular set of data and displayed the analysis results in the UI. When forwarding the third rendered image displaying the analysis results, the remote user is able to view the analysis results without the virtual desktop VM having to actually forward 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 data collection and analysis. In some embodiments, when the remote user interacts with the third rendered image, the third set of actions is received after the micro-agent module of the local device receives an interaction notification from the remote user.

[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 directed by the remote user to store the analysis results, the virtual desktop VM directs the data collection and analysis VM to store the analysis results. In an embodiment where the particular set of data is stored on a local device, the virtual desktop VM directs the data collection and analysis VM to also store the analysis results on the local device. In an embodiment where the particular set of data is stored on a data storage device connected to the local device, the virtual desktop VM directs 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, the remote users are able to view and analyze data stored at the vehicle without having to actually forward the data to the remote user. This allows data-intensive operations to be performed faster on the virtual desktop than if the data were to be forwarded to the 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 different location from the vehicle can remotely access the vehicle's device and use the device's virtual desktop to immediately access and operate on any large data sets collected and stored on the vehicle's hypervisor or virtual desktop's virtual disk. This allows software, such as forensic analysis software, to operate on aggregated data immediately and by remote experts who have special knowledge and skills in operating such software beyond the capabilities of local onboard personnel.

[0120] Figure 8 An example vehicle device 800 is illustrated as being accessed by a remote device 810 over 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 through 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 through 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 through 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, a person of ordinary skill 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, a person of ordinary skill will understand that a connection broker module may instead be executed on the vehicle device 800 for facilitating interaction between the virtual desktop VM 832 and the remote device 810.

[0122] The vehicle device UI 838 is executed 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 location of the vehicle. 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] When authenticated by the micro-agent 834, the remote device 810 interacts with the virtual desktop VM 832 to remotely use the data collection and analysis VM 836. In some embodiments, the UI 850 of the remote device presents the simulated vehicle device UI 852 and the simulated data collection and analysis VM 854. The simulated vehicle device UI 852 is a rendered image of the vehicle device UI 838 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 shown 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] Since the virtual desktop VM 832 micro-connection agent 834 is instantiated on the vehicle device 800, from the remote user's perspective, their remote device 810 displays the UI 838 and VM 836 of the vehicle device 800 and allows them 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 8 The remote device 810 of the vehicle is performed via a network. In some embodiments, the remote device resides at a first location with the vehicle. In other embodiments, the remote device resides at 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 device, an edge router executed on a computer operating in the vehicle (e.g., a first device), or an edge router executed on a machine executed on a computer in the vehicle. In some embodiments, the remote second device resides at 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 for connecting the remote second device to the SD-WAN.

[0127] Process 900 begins by requesting (at 905) 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 allowing the remote user 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 the micro-agent or 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 jointly or alternatively includes a MAC address and / or IP address associated with the remote second device.

[0128] Next, process 900 determines (at 910) whether the 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 or connection proxy module. In some embodiments, the micro-agent or connection proxy module receives a remote access success message or a remote access failure message in a data message (e.g., in an API message). The remote second device notifies whether the set of authentication credentials received for the remote user and / or the remote second device has been successfully authenticated to remotely use 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 or connection proxy module), then 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 or connection proxy module), then 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 or 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 or connection proxy module in other embodiments.

[0130] Next, process 900 directs (at 920) the data collection and analysis second VM executing 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 the micro-agent or connection agent module, and the micro-agent or connection agent module converts them into actions that the virtual desktop VM will perform on the UI of the first device. While 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 (per 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 particular set of data in the UI of the first device. In some embodiments, the data collection and analysis second VM retrieves the particular set of data from a local data repository on the first device. In other embodiments, the data collection and analysis second VM retrieves the particular set of data from a data storage device (e.g., a secure SSD) residing in a vehicle and connected to the first device.

[0132] In some embodiments, the second rendered image displays the particular set of data so that the remote user can view the particular set of data. Next, process 900 determines (at 930) a set of analysis results based on the particular set of data displayed in the second rendered image. In some embodiments, the remote user can view the particular set of data and determine the set of analysis results based solely on the viewing. For example, in some embodiments, the particular set of 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, the remote user uses a remote device to guide the virtual desktop first VM to (1) guide the data collection and analysis second VM to analyze the particular set of data to generate the set of analysis results, (2) generate a third rendered image that displays the analysis results, and (3) forward the third rendered image to the remote second device.

[0133] Finally, process 900 directs (at 935) the data collection and analysis second VM to record the set of analysis results for the particular set of data. In an embodiment where the remote user directly generates the set of analysis results, the remote second device forwards the set of analysis results to the first device for the data collection and analysis second VM to record 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 particular set of data. In conjunction 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 repository 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 storing the particular set of data (i.e., the local storage device of the first device or the storage device of the vehicle). 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 site, or central data repository. Fig.10 A vehicle 1000 is illustrated where data is collected and stored at the vehicle 1000 and a remote site 1010 .

[0136] The vehicle 1000 includes a device 1020 executing a hypervisor 1022, a group of VMs 1024, a connection broker 1026, and a group of one or more virtual desktop VMs 1028 to 1029. The hypervisor 1022 configures each component of the 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 1022 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 set of virtual desktop VMs 1028-1029, a different micro-agent module executes within each virtual desktop VM 1028-1029 to facilitate interaction between its virtual desktop VM and the remote device.

[0137] The vehicle 1010 also includes a set of one or more data storage devices 1030 that store data collected at the vehicle 1020. In some embodiments, data analysis results generated from the collected data are also stored on the data storage device 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 the 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 1010 to a remote site. In such an embodiment, the agent 1040 replicates all data and analysis results stored on the data storage device 1030 and forwards them to the connection agent 1026. The connection agent 1026 provides all such information to the vehicle's edge router 1050, which forwards it 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 1030 to the remote data storage device 1060, the synchronization agents 1040-1041 ensure that there is a copy of all collected and analyzed data for the vehicle 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 A process 1100 is conceptually illustrated for some embodiments of 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 to remotely use 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 proxy 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, in some embodiments, the hypervisor configures micro-agent software, modules or applications on the virtual desktop VM to authenticate remote users to access 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 site. 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 site is a cloud site. In other embodiments, the remote site is a cloud site.

[0143] At 1115, the process 1100 maintains secure storage of data on a data storage second device connected to a first device in the 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 storage of data 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. In some embodiments, because 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 thereto without completely losing the data.

[0145] Finally, the process 1100 sends (at 1130) a notification indicating 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 the agent module to send the notification to all authorized users of the first device, the agent module maintaining a list of authorized users of the first device (e.g., for authenticating remote users). In conjunction or alternatively, 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] Such 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 the secure storage of data on the data storage second device. In some embodiments, the process 1100 is performed indefinitely. In other embodiments, the process 1100 ends, for example, when the vehicle (and subsequently the management program) is powered off.

[0147] By using an onboard virtual desktop to collect and analyze data, some embodiments allow remote interaction with locally collected data sets. The use of a virtual desktop together with SD-WAN ensures reliable remote access to data with sufficient bandwidth, resulting in a good user experience, but requires a multi-carrier multi-LTE configuration. In some embodiments, this ensures coverage with sufficient connections across the bandwidth regardless of where the vehicle is located, and even if the vehicle is in motion and passes through unexpected areas with weak signals on one or more carriers. 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 a single carrier and single connection embodiment would impose.

[0148] In some embodiments, a device operated in a vehicle using a virtual desktop for remote use is connected to a secure SSD for storing data collected at the vehicle. In such an embodiment, the remotely accessed device is able to securely store sensitive data (e.g., forensic data collected by a police car) at the vehicle while still protecting the sensitive data from unauthorized access. Additionally, 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 site, 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 be turned off when the vehicle is turned off. In such an embodiment, the device's hypervisor detects when the vehicle is turned off (i.e., powered off by the user of the vehicle), and notifies the remote user when the device is powered off to save their work before it is lost. Upon receiving such a 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 they have 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, they can immediately access the collected data, while securely storing the data to protect against threats, and syncing it to a secure remote location, leveraging 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 and for vehicles that collect data that requires analysis (such as police cars and first response vehicles), a person of ordinary skill will understand that any type of vehicle may be deployed with a device that executes a virtual desktop VM to remotely access any type of VM or application.

[0152] Many of the above features and applications are implemented as software processes 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, cores of a processor, or other processing units), they cause the processing units to perform the actions indicated 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 through 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 to be processed by a processor. In addition, in some embodiments, multiple software inventions can be implemented as sub-parts of a larger program while retaining 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 installed to operate on one or more electronic systems, the software program defines one or more specific machine implementations that execute and implement the operations of the software program.

[0154] Fig.12 A computer system 1200 is conceptually illustrated with which some embodiments of the present invention may be implemented. The computer system 1200 may be used to implement any of the computers and servers described above. Thus, it 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 many 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] 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 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 processing unit 1210 and other modules of the computer system. On the other hand, permanent storage device 1235 is a read and write memory device. Such a device is a non-volatile memory unit that stores instructions and data even when 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 magnetic disk drive) as permanent storage device 1235.

[0157] Other embodiments use removable storage devices (e.g., flash drives, etc.) as permanent storage devices. Similar to permanent storage device 1235, system memory 1225 is a read and write memory device. However, unlike storage device 1235, system memory is a volatile read and write memory, such as random access memory. System memory stores some instructions and data that the processor needs at runtime. 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] Bus 1205 also connects to input and output devices 1240 and 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 pointer 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 a cathode ray tube (CRT) or a liquid crystal display (LCD). Some embodiments include devices that function as both input and output devices, such as a touch screen.

[0159] Finally, if Fig.12 12, 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 computer network, such as a local area network ("LAN"), a wide area network ("WAN"), or an intranet, or a network of 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 disks (e.g., DVD-ROM, dual-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 are executable by at least one processing unit and that include 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 involves 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 display means display on an electronic device. As used in this specification, the terms "computer-readable medium", "computer-readable medium" 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 short-lived or transient signals.

[0163] Although the present invention has been described with reference to many specific details, it will be appreciated by those skilled in the art that the present invention may be embodied in other specific forms without departing from the spirit of the present invention. Therefore, it will be appreciated by those skilled in the art that the present invention is not limited by the foregoing illustrative details, but is defined by the appended claims.

Claims

1. A method for analyzing data collected by a vehicle at a first location, the method comprising: On a first device operating in the vehicle: Instantiating a virtual desktop first virtual machine VM, the virtual desktop first VM being used to allow a remote user using a remote second device at a remote second location to remotely use the first device; instantiating a data collection second VM for locally using the first device to collect a set of data at the first location and storing the set of data at the vehicle; and Interaction between the virtual desktop first VM and the remote user over a network is facilitated 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 over the network.

2. The method of claim 1, wherein facilitating the interaction between the virtual desktop VM and the remote user comprises configuring a micro-agent module within the virtual desktop VM to authenticate the remote user and facilitate the interaction between the virtual desktop VM and the remote user.

3. The method of claim 2, wherein configuring the micro-agent module to authenticate the remote user comprises configuring the micro-agent module to authenticate a set of user authentication credentials associated with the remote user.

4. The method of claim 3, wherein the set of user authentication credentials comprises a username and password associated with the remote user.

5. The method of claim 3, wherein configuring the micro-agent module to authenticate the remote user further comprises configuring the micro-agent module to authenticate a set of device authentication credentials associated with the remote second device. 6 . The method of claim 5 , 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.

7. The method of claim 2, wherein configuring the micro-proxy module to authenticate the remote user comprises configuring the micro-proxy module with a set of rules indicating which resources on the first device the remote user is allowed to access.

8. The method of claim 7, wherein the resources on the first device to which the remote user is authorized to access include a set of one or more data collection and analysis VMs.

9. The method of claim 1, wherein facilitating the interaction between the virtual desktop VM and the remote user comprises configuring a connection broker module on the first device to authenticate the remote user and facilitate the interaction between the virtual desktop VM and the remote user.

10. The method of claim 1, wherein the virtual desktop VM is a first virtual desktop VM, the method further comprising instantiating a group of two or more virtual desktop VMs including the first virtual desktop VM, wherein each virtual desktop VM is associated with a different remote user such that no two remote users access the same virtual desktop VM. The method of claim 1 , wherein the data stored at the vehicle is stored on the first device. 12 . The method of claim 1 , wherein the data stored at the vehicle is stored on a specific storage device connected to the first device. The method according to claim 12 , wherein the specific storage device is a secure solid state drive (SSD).

14. The method of claim 12, further comprising configuring a synchronization agent on the virtual desktop VM to copy the data stored on the secure SSD to a remote data storage device.

15. The method according to claim 13, further comprising: detecting potential unauthorized access to the secure SSD; and The data stored on the secure SSD is deleted.

16. The method of claim 15, wherein the remote user is a first remote user, and detecting potential unauthorized access to the secure SSD comprises detecting unauthorized access to the virtual desktop VM by a second remote user using a remote third device.

17. The method of claim 1, wherein the network is a software defined wide area network (SD-WAN), and 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 the vehicle that connects the vehicle to the SD-WAN.

18. The method of claim 17, wherein the set of wireless network links comprises at least two wireless network links provided by at least two different service providers.

19. The method of claim 17, wherein the edge router is one of: (i) an edge router device, (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.

20. A non-transitory machine-readable medium storing a program for execution by at least one processing unit of a first device operating in a vehicle for analyzing data collected by the vehicle at a first location, the program comprising a set of instructions for: Instantiating a virtual desktop first virtual machine VM, the virtual desktop first VM being used to allow a remote user using a remote second device at a remote second location to remotely use the first device; instantiating a data collection second VM for locally using the first device to collect a set of data at the first location and storing the set of data at the vehicle; and Interaction between the virtual desktop first VM and the remote user over a network is facilitated 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 over the network.

Citation Information

Patent Citations

  • Network resource access method and device, computer equipment and storage medium

    CN111756729A

  • Analyzing past events by utilizing imagery data captured by a plurality of on-road vehicles

    US20190306463A1

  • Access control in the remote device of network redirector

    US20210014334A1

  • System, method, and apparatus for managing vehicle data collection

    US20210192867A1

  • Enhanced attachable writable volumes in VDI based on data requirements

    US20220091869A1