Disclosure of Invention
To solve or at least alleviate one or more of the above problems, the following technical solutions are provided.
According to a first aspect of the present invention, there is provided an in-vehicle communication system, the system comprising: an on-board diagnostic unit; and a central gateway communicatively connected with the on-board diagnostics unit and deployed with a firewall policy, wherein the central gateway is configured to receive data from the on-board diagnostics unit and selectively send the received data to a vehicle control unit based on the firewall policy.
The in-vehicle communication system according to an embodiment of the present invention, wherein the central gateway is further configured to: receiving data via one or more of a CAN bus, a LIN bus, and an ethernet channel; and selectively transmitting the received data to a vehicle control unit based on the firewall policy.
The in-vehicle communication system according to an embodiment of the invention or any one of the above embodiments, wherein the central gateway includes: a processor configured to communicatively connect with the on-board diagnostics unit via a CAN interface; a switch configured to communicatively connect with the on-board diagnostics unit and the processor via Ethernet; and a router configured to be communicatively connected with the switch via an ethernet and to transmit the received data to a vehicle control unit via a CAN bus and/or a LIN bus.
The in-vehicle communication system according to an embodiment of the invention or any one of the above embodiments, wherein the firewall policy includes: dividing the vehicle-mounted communication network into a first broadcast domain and a second broadcast domain based on the virtual local area network; detecting data received from the on-board diagnostic unit to identify the received data as data that accesses an external network and data that does not access the external network; and configuring the first broadcast domain for communication of data accessing an external network and the second broadcast domain for communication of data not accessing the external network.
The in-vehicle communication system according to an embodiment of the invention or any one of the above embodiments, wherein in the processor of the central gateway, the firewall policy includes: pre-configuring a mapping table between a CAN identifier and a routing identifier; matching data received from the on-board diagnostics unit via a CAN interface with the pre-configured mapping table; transmitting data received from the on-board diagnostic unit via the CAN interface to the vehicle control unit via the router over a CAN bus and/or a LIN bus in response to the data matching the preconfigured mapping table; and discarding data received from the on-board diagnostics unit via the CAN interface in response to the data not matching the pre-configured mapping table.
The in-vehicle communication system according to an embodiment of the present invention or any one of the above embodiments, wherein the mapping table between the preconfigured CAN identifier and the routing identifier includes: an initial mapping table configured to establish a mapping relationship between the CAN identifier and a data block corresponding to the routing identifier; and a forwarding mapping table configured to establish a mapping relationship between the CAN identifier and a CAN bus used for transmitting a data block corresponding to the routing identifier.
The in-vehicle communication system according to an embodiment of the present invention or any one of the above embodiments, wherein the firewall policy further includes: matching data received from the on-board diagnostics unit via a CAN interface with the initial mapping table; discarding data received from the on-board diagnostics unit via a CAN interface in response to the data not matching the initial mapping table; further matching data received from the on-board diagnostics unit via a CAN interface with the forwarding mapping table in response to the data matching the initial mapping table; transmitting the data over a CAN bus and/or a LIN bus to the vehicle control unit via the router in response to the data matching the forwarding mapping table; and discarding the data in response to the data not matching the forwarding mapping table.
The in-vehicle communication system according to an embodiment of the invention or any one of the above embodiments, wherein in the switch of the central gateway, the firewall policy includes: pre-configuring a mapping table between an IP address and a port; identifying a target IP address and a target port for data received from the on-board diagnostics unit via Ethernet; matching the identified target IP address and target port with the mapping table between the pre-configured IP address and port; transmitting the data over Ethernet to the vehicle control unit in response to a mapping table match between the identified target IP address and target port and the preconfigured IP address and port; and discarding the data in response to a mapping table mismatch between the identified target IP address and target port and the preconfigured IP address and port.
The in-vehicle communication system of an embodiment of the invention or any embodiment thereof, wherein a destination IP address and a destination port of data received from the in-vehicle diagnostic unit via ethernet are identified using a tri-state content addressable memory.
According to a second aspect of the present invention, there is provided a vehicle-mounted communication method including: receiving data from an on-board diagnostic unit; deploying a firewall policy at a central gateway, the central gateway communicatively coupled with the on-board diagnostic unit; and selectively transmitting the received data to a vehicle control unit based on the firewall policy.
The vehicle-mounted communication method according to an embodiment of the invention further comprises the following steps: receiving data via one or more of a CAN bus, a LIN bus, and an ethernet channel; and selectively transmitting the received data to a vehicle control unit based on the firewall policy.
The in-vehicle communication method according to an embodiment of the invention or any one of the above embodiments, wherein the central gateway includes: a processor configured to communicatively connect with the on-board diagnostics unit via a CAN interface; a switch configured to communicatively connect with the onboard diagnostic unit and the processor via Ethernet; and a router configured to be communicatively connected with the switch via an ethernet and to transmit the received data to a vehicle control unit via a CAN bus and/or a LIN bus.
The vehicle communication method according to an embodiment of the invention or any one of the above embodiments, wherein the firewall policy includes: dividing the vehicle-mounted communication network into a first broadcast domain and a second broadcast domain based on the virtual local area network; detecting data received from the on-board diagnostic unit to identify the received data as data that accesses an external network and data that does not access the external network; and configuring the first broadcast domain for communication of data accessing an external network, and configuring the second broadcast domain for communication of data not accessing the external network.
The in-vehicle communication method according to an embodiment of the invention or any one of the above embodiments, wherein in the processor of the central gateway, the firewall policy includes: pre-configuring a mapping table between a CAN identifier and a routing identifier; matching data received from the on-board diagnostics unit via a CAN interface with the pre-configured mapping table; transmitting data received from the on-board diagnostic unit via the CAN interface to the vehicle control unit over the CAN bus and/or LIN bus via the router in response to the data matching the preconfigured mapping table; and discarding data received from the on-board diagnostics unit via the CAN interface in response to the data not matching the preconfigured mapping table.
The in-vehicle communication method according to an embodiment of the invention or any one of the above embodiments, wherein the mapping table between the preconfigured CAN identifier and the routing identifier includes: an initial mapping table configured to establish a mapping relationship between the CAN identifier and a data block corresponding to the routing identifier; and a forwarding mapping table configured to establish a mapping relationship between the CAN identifier and a CAN bus used for transmitting a data block corresponding to the routing identifier.
The vehicle communication method according to an embodiment of the invention or any one of the above embodiments, wherein the firewall policy further includes: matching data received from the on-board diagnostics unit via a CAN interface with the initial mapping table; discarding data received from the on-board diagnostics unit via a CAN interface in response to the data not matching the initial mapping table; further matching data received from the on-board diagnostics unit via a CAN interface with the forwarding mapping table in response to the data matching the initial mapping table; transmitting the data over a CAN bus and/or a LIN bus to the vehicle control unit via the router in response to the data matching the forwarding mapping table; and discarding the data in response to the data not matching the forwarding mapping table.
The in-vehicle communication method according to an embodiment of the invention or any one of the above embodiments, wherein in the switch of the central gateway, the firewall policy includes: pre-configuring a mapping table between an IP address and a port; identifying a target IP address and a target port for data received from the on-board diagnostics unit via Ethernet; matching the identified target IP address and target port with the mapping table between the pre-configured IP address and port; transmitting the data over Ethernet to the vehicle control unit in response to a mapping table match between the identified target IP address and target port and the preconfigured IP address and port; and discarding the data in response to a mapping table mismatch between the identified target IP address and target port and the preconfigured IP address and port.
The in-vehicle communication method of one or any of the above embodiments, wherein a target IP address and a target port of data received from the in-vehicle diagnostic unit via ethernet are identified using a tri-state content addressable memory.
According to a third aspect of the present invention, there is provided a computer storage medium comprising instructions which, when executed, perform the steps of the in-vehicle communication method according to the second aspect of the present invention.
According to a fourth aspect of the present invention, there is provided a computer device comprising a memory, a processor and a computer program stored on the memory and running on the processor, the processor implementing the steps of the in-vehicle communication method according to the second aspect of the present invention when executing the computer program.
According to a fifth aspect of the present invention, there is provided a vehicle including the in-vehicle communication system according to the first aspect of the present invention.
According to the scheme for vehicle-mounted communication, the firewall policy is deployed at the central gateway, so that data received from the vehicle-mounted diagnosis unit is detected and intercepted through the deployed firewall policy before being sent to the vehicle control unit, the access right of a network attacker to key services in a vehicle internal network through a port of the vehicle-mounted diagnosis system is effectively blocked, and the user experience and the safety performance of driving of the vehicle are improved.
Detailed Description
The following description of the specific embodiments is merely exemplary in nature and is in no way intended to limit the disclosed technology or the application and uses of the disclosed technology. Furthermore, there is no intention to be bound by any expressed or implied theory presented in the preceding technical field, background, or the following detailed description.
In the following detailed description of embodiments, numerous specific details are set forth in order to provide a more thorough understanding of the disclosed technology. It will be apparent, however, to one of ordinary skill in the art that the disclosed techniques may be practiced without these specific details. In other instances, well-known features have not been described in detail to avoid unnecessarily complicating the description.
Words such as "comprise" and "comprise" mean that in addition to having elements and steps which are directly and explicitly stated in the description, the present solution does not exclude the presence of other elements and steps which are not directly or explicitly stated. Terms such as "first" and "second" do not denote an order of the elements in time, space, size, etc., but rather are used to distinguish one element from another.
Hereinafter, exemplary embodiments according to the present invention will be described in detail with reference to the accompanying drawings.
FIG. 1 shows a schematic diagram of an in-vehicle communication system in accordance with one or more embodiments of the invention.
As shown in fig. 1, the vehicle-mounted communication system 100 includes a vehicle-mounted diagnostic unit 110 and a central gateway 120, the central gateway 120 communicatively connected with the vehicle-mounted diagnostic unit 110 and deployed with a firewall policy, wherein the central gateway 120 may be configured to receive data from the vehicle-mounted diagnostic unit 110 and selectively transmit the received data to a vehicle control unit 130 based on the firewall policy.
Alternatively, the central gateway 120 may employ a body communication network architecture including CAN communication, LIN communication, and ethernet communication, which operates as a key interaction node for vehicle-mounted communication data, so it is necessary to design a firewall policy at the central gateway 120 for security detection and interception of data received from the vehicle-mounted diagnostic unit 110 and data received via one or more of the CAN bus, LIN bus, and ethernet channel.
According to one or more embodiments of the present invention, the firewall policy deployed at the central gateway 120 CAN ensure that data received from the on-board diagnostic unit 110 and data received via one or more of the CAN bus, LIN bus, and ethernet channel is first subject to detection and interception by the firewall policy before being received by the corresponding on-board control unit 130, without being able to directly access the corresponding vehicle control unit 130 bypassing the firewall policy deployed at the central gateway 120. In accordance with one or more embodiments of the present invention, the firewall policy deployed at the central gateway 120 CAN ensure that data received from the on-board diagnostic unit 110, as well as data received via one or more of the CAN bus, LIN bus, and ethernet channels, are routed according to a whitelist policy that minimizes access rights, and data that does not comply with the routing policy is discarded.
In one embodiment, the firewall policies deployed at the central gateway 120 may include: dividing the vehicle-mounted communication network into a first broadcast domain and a second broadcast domain based on a virtual local area network technology; detecting data received from the in-vehicle diagnosis unit 110 to recognize the received data as data that accesses an external network and data that does not access the external network; and configuring the divided first broadcast domain for communication of data accessing the external network, and configuring the divided second broadcast domain for communication of data not accessing the external network. Thus, data that is not accessed by the external network is isolated by the virtual local area network technology, so that data that is accessed by the external network cannot directly access the corresponding service within the internal isolation area through the central gateway 120.
Optionally, the central gateway 120 may be connected with the one or more vehicle control units 130 via an external bus, wherein the external bus may establish communication between the central gateway 120 and the one or more vehicle control units 130 based on one or more of the CAN protocol, the LIN protocol, and the ethernet protocol.
In one embodiment, central gateway 120 may be configured to: receiving data via one or more of a CAN bus, a LIN bus, and an ethernet channel; and selectively transmit the received data to the vehicle control unit 130 based on the firewall policy.
It is noted that the firewall policy deployed at the central gateway 120 may not only be applicable to detecting and intercepting data received from the on-board diagnostics unit 110 and data received via one or more of the CAN bus, LIN bus, and ethernet channel, but that the firewall policy deployed at the central gateway 120 may also detect and intercept other data passing through the central gateway 120 without departing from the spirit and scope of the present invention.
The vehicle control unit 130 is illustratively a device for controlling a vehicle, or a device for controlling auxiliary equipment mounted on a vehicle. The vehicle control unit 130 may include, but is not limited to, a powertrain control module configured to provide control and monitoring of engine operating components (e.g., idle control components, fuel delivery components, emission control components, etc.) (e.g., status of engine diagnostic codes), a body control module configured to manage various power control functions (such as exterior lighting, interior lighting, keyless entry, remote start) and entry point verification (e.g., closed status of a hood, doors, and/or trunk of the vehicle), a radio transceiver module configured to communicate with a key fob or other local vehicle device, a climate control management module configured to provide control and monitoring of heating and cooling system components (e.g., compressor clutch and blower control, temperature sensor information, etc.), and the like.
FIG. 2 shows a schematic diagram of an in-vehicle communication system in accordance with one or more embodiments of the invention.
As shown in fig. 2, the in-vehicle communication system 200 includes an in-vehicle diagnostic unit 210 and a central gateway 220, the central gateway 220 communicatively connected with the in-vehicle diagnostic unit 210 and deployed with a firewall policy, wherein the central gateway 220 may be configured to receive data from the in-vehicle diagnostic unit 210 and selectively transmit the received data to a vehicle control unit 230 based on the firewall policy.
Optionally, the central gateway 220 may include: a processor 2201 configured to communicatively connect with the on-board diagnostics unit 210 via a CAN interface; a switch 2202 configured to be communicatively connected with the on-board diagnostic unit 210 and the processor 2201 via ethernet; and a router 2203 configured to be communicatively connected with the switch 2202 via ethernet and to transmit data received from the on-board diagnostic unit 210 to the vehicle control unit 130 via a CAN bus and/or a LIN bus. Illustratively, the firewall policies deployed at the central gateway 220 may include one or more firewall policies deployed at one or more of the processor 2201, the switch 2202, and the router 2203 to detect and intercept data received from the on-board diagnostic unit 210 and data received via one or more of the CAN bus, LIN bus, and ethernet channel.
In one embodiment, the firewall policies deployed at the central gateway 220 may include: dividing the vehicle-mounted communication network into a first broadcast domain and a second broadcast domain based on a virtual local area network technology; detecting data received from the in-vehicle diagnosis unit 210 to recognize the received data as data that accesses an external network and data that does not access the external network; and configuring the divided first broadcast domain for communication of data accessing the external network, and configuring the divided second broadcast domain for communication of data not accessing the external network. Thus, data that will not be accessed by the external network is isolated by the virtual local area network technology, so that data accessing the external network cannot directly access the corresponding service in the internal isolation area through the central gateway 220.
In one embodiment, as shown in fig. 2, at the processor 2201 of the central gateway 220, the firewall policy may include: pre-configuring a mapping table between a CAN identifier and a routing identifier; matching data received from the on-board diagnostics unit 210 via the CAN interface with a pre-configured mapping table; transmitting data to the vehicle control unit 230 through the CAN bus and/or the LIN bus via the router 2203 in response to data received from the on-board diagnosis unit 210 via the CAN interface matching a pre-configured map; and discarding data received from the on-board diagnostics unit 210 via the CAN interface in response to the data not matching the pre-configured mapping table. Optionally, the preconfigured mapping table between CAN identifiers and routing identifiers may include: an initial mapping table configured to establish a mapping relationship between the CAN identifier and a data block corresponding to the routing identifier; and a forwarding mapping table configured to establish a mapping relationship between the CAN identifier and a CAN bus used for transmitting the data block corresponding to the routing identifier, which defines a forwarding rule of the CAN message between the CAN buses.
In one embodiment, at the processor 2201 of the central gateway 220, the firewall policy may further include: matching data received from the on-board diagnostics unit 210 via the CAN interface with the initial mapping table; discarding data received from the on-board diagnostics unit 210 via the CAN interface in response to the data not matching the initial mapping table; further matching the data received from the on-board diagnostics unit 210 via the CAN interface to the forwarding mapping table in response to the data matching the initial mapping table; transmitting the data to the vehicle control unit 230 over the CAN bus and/or LIN bus via the router 2203 in response to the data matching the forwarding map; and discarding the data in response to the data not matching the forwarding mapping table. By deploying a firewall policy including an initial mapping table and a forwarding mapping table at the processor 2201 of the central gateway 220, the efficiency and accuracy of detection and interception of data received from the on-board diagnostics unit 210 may be improved.
In another embodiment, as shown in fig. 2, at switch 2202 of central gateway 220, the firewall policies may include: pre-configuring a mapping table between an IP address and a port, which represents a mapping table of an accessible service; identifying a target IP address and a target port of data received from the on-board diagnostic unit 210 via ethernet; matching the identified target IP address and target port with a mapping table between the pre-configured IP address and port; transmitting the data to the vehicle control unit 230 over the ethernet in response to the identified target IP address and target port matching a mapping table between pre-configured IP addresses and ports; and discarding the data in response to a mismatch in the mapping table between the identified target IP address and target port and the pre-configured IP address and port. Illustratively, a Ternary Content Addressable Memory (TCAM) may be utilized to identify a source IP address, a destination IP address, and a destination port for data received from the on-board diagnostics unit 210 via the Ethernet network. By identifying the source IP address, the target IP address, and the target port of the data received from the on-board diagnosis unit 210 via the ethernet using the TCAM, both exact and fuzzy matching searches can be achieved, so that data identification time can be shortened and flexibility of data identification can be improved.
In one embodiment, in order to further improve the Security of the vehicle-mounted communication, policies such as TLS (Transport Layer Security) mutual authentication and CA certificate verification may be adopted for communication between the vehicle side and the cloud side. In the TLS mutual authentication process, the cloud may send the public key to the vehicle end, and the vehicle end may respond by sending its public key to the cloud.
In one embodiment, in order to further prevent a network attacker from launching malicious attacks on key services in the vehicle internal network through a port of the vehicle-mounted diagnosis system, the vehicle-mounted diagnosis identity authentication may adopt an AES symmetric encryption technology.
According to the vehicle-mounted communication system provided by one aspect of the invention, the firewall policy is deployed at the central gateway, so that data received from the vehicle-mounted diagnosis unit is detected and intercepted through the deployed firewall policy before being sent to the vehicle control unit, thereby effectively blocking the access authority of a network attacker to key services in the vehicle internal network through the port of the vehicle-mounted diagnosis system, and improving the user experience and the safety performance of driving of the vehicle.
Fig. 3 shows a flow diagram of an in-vehicle communication method according to one or more embodiments of the invention.
As shown in fig. 3, a vehicle communication method according to one or more embodiments of the present invention includes the steps of:
step 310: receiving data from an on-board diagnostic unit;
step 320: deploying a firewall policy at a central gateway, the central gateway communicatively connected with the on-board diagnostic unit; and
step 330: selectively transmitting the received data to a vehicle control unit based on the firewall policy.
Optionally, the central gateway may comprise: a processor configured to communicatively connect with an onboard diagnostic unit via a CAN interface; a switch configured to communicatively connect with the onboard diagnostic unit and the processor via an Ethernet network; and a router configured to be communicatively connected with the switch via an ethernet and to transmit data received from the on-board diagnostic unit to the vehicle control unit via the CAN bus and/or the LIN bus. Illustratively, the firewall policies deployed at the central gateway may include one or more firewall policies deployed at one or more of the processor, the switch, and the router to detect and intercept data received from the on-board diagnostic unit and data received via one or more of the CAN bus, the LIN bus, and the ethernet channel
In one embodiment, in step 320, the firewall policy deployed at the central gateway may include: dividing the vehicle-mounted communication network into a first broadcast domain and a second broadcast domain based on a virtual local area network technology; detecting data received from the on-board diagnosis unit to recognize the received data as data accessing an external network and data not accessing the external network; and configuring the divided first broadcast domain for communication of data accessing the external network, and configuring the divided second broadcast domain for communication of data not accessing the external network. Therefore, the data which can not be accessed by the external network is isolated through the virtual local area network technology, so that the data which is accessed by the external network can not directly access the corresponding service in the internal isolation area through the central gateway.
In one embodiment, at the processor of the central gateway, the deployed firewall policies may include, at step 320: pre-configuring a mapping table between a CAN identifier and a routing identifier; matching data received from the on-board diagnostic unit via the CAN interface with a pre-configured mapping table; transmitting data to the vehicle control unit through the CAN bus and/or the LIN bus via the router in response to data received from the on-board diagnostic unit via the CAN interface matching a pre-configured mapping table; and discarding the data received from the on-board diagnostics unit via the CAN interface in response to the data not matching the pre-configured mapping table. Optionally, the preconfigured mapping table between CAN identifiers and routing identifiers may include: an initial mapping table configured to establish a mapping relationship between the CAN identifier and a data block corresponding to the routing identifier; and a forwarding mapping table configured to establish a mapping relationship between the CAN identifier and a CAN bus used for transmitting the data block corresponding to the routing identifier, which defines a forwarding rule of the CAN message between the CAN buses.
In one embodiment, at the processor of the central gateway, the deployed firewall policy may further include, in step 320: matching data received from the on-board diagnostic unit via the CAN interface with an initial mapping table; discarding data received from the on-board diagnostics unit via the CAN interface in response to the data not matching the initial mapping table; further matching data received from an on-board diagnostics unit via a CAN interface with a forwarding mapping table in response to the data matching an initial mapping table; transmitting the data over a CAN bus and/or a LIN bus to a vehicle control unit via a router in response to the data matching the forwarding mapping table; and discarding the data in response to the data not matching the forwarding mapping table. By deploying firewall policies including an initial mapping table and a forwarding mapping table at a processor of the central gateway, the efficiency and accuracy of detection and interception of data received from the on-board diagnostic unit may be improved.
In another embodiment, at the switch of the central gateway, the firewall policy may include, in step 320: pre-configuring a mapping table between an IP address and a port, which represents a mapping table of an accessible service; identifying a target IP address and a target port of data received from the on-board diagnostic unit via the Ethernet; matching the identified target IP address and target port with a mapping table between the pre-configured IP address and port; transmitting the data to a vehicle control unit over an Ethernet network in response to the identified target IP address and target port matching a mapping table between preconfigured IP addresses and ports; and discarding the data in response to a mismatch in the mapping table between the identified target IP address and target port and the pre-configured IP address and port. Illustratively, a Ternary Content Addressable Memory (TCAM) may be utilized to identify a source IP address, a destination IP address, and a destination port for data received from an onboard diagnostic unit via an Ethernet network. By using the TCAM to identify the source IP address, the target IP address, and the target port of data received from the on-board diagnosis unit via the ethernet, both exact and fuzzy matching searches can be achieved, thereby enabling to shorten data identification time and to improve flexibility of data identification.
In one embodiment, in order to further improve the Security of the vehicle-mounted communication, policies such as TLS (Transport Layer Security) mutual authentication and CA certificate verification may be adopted for communication between the vehicle side and the cloud side. In the TLS mutual authentication process, the cloud may send the public key to the vehicle end, and the vehicle end may respond by sending its public key to the cloud.
In one embodiment, to further prevent a network attacker from launching malicious attacks on key services in the vehicle internal network through a port of the vehicle-mounted diagnostic system, the vehicle-mounted diagnostic identity authentication may employ AES symmetric encryption technology.
According to the vehicle-mounted communication method provided by the invention, the firewall policy is deployed at the central gateway, so that data received from the vehicle-mounted diagnosis unit is detected and intercepted through the deployed firewall policy before being sent to the vehicle control unit, thereby effectively blocking the access authority of a network attacker to key services in the internal network of the vehicle through a port of the vehicle-mounted diagnosis system, and improving the user experience of the vehicle and the safety performance of driving and riding.
FIG. 4 is a block diagram of a computer device in accordance with one embodiment of the present invention. As shown in fig. 4, the computer device 400 includes a memory 410, a processor 420, and a computer program 430 stored on the memory 410 and executable on the processor 420. The processor 420, when executing said computer program 430, carries out the various steps of the in-vehicle communication method as described above.
In addition, as described above, the present invention can also be embodied as a computer storage medium in which a program for causing a computer to execute the in-vehicle communication method according to one aspect of the present invention is stored.
Here, as the computer storage medium, various types of computer storage media such as a disk (e.g., a magnetic disk, an optical disk, etc.), a card (e.g., a memory card, an optical card, etc.), a semiconductor memory (e.g., a ROM, a nonvolatile memory, etc.), a tape (e.g., a magnetic tape, a cassette tape, etc.), and the like can be used.
Where applicable, the various embodiments provided by the present disclosure may be implemented using hardware, software, or a combination of hardware and software. Also, where applicable, the various hardware components and/or software components set forth herein may be combined into composite components comprising software, hardware, and/or both without departing from the scope of the present disclosure. Where applicable, the various hardware components and/or software components set forth herein may be separated into sub-components comprising software, hardware, or both without departing from the scope of the present disclosure. Further, where applicable, it is contemplated that software components may be implemented as hardware components, and vice versa.
Software in accordance with the present disclosure (such as program code and/or data) can be stored on one or more computer storage media. It is also contemplated that software identified herein may be implemented using one or more general purpose or special purpose computers and/or computer systems that are networked and/or otherwise. Where applicable, the order of various steps described herein can be varied, combined into composite steps, and/or separated into sub-steps to provide features described herein.
The embodiments and examples set forth herein are presented to best explain embodiments in accordance with the invention and its particular application and to thereby enable those skilled in the art to make and utilize the invention. However, those skilled in the art will recognize that the foregoing description and examples have been presented for the purpose of illustration and example only. The description as set forth is not intended to cover all aspects of the invention or to limit the invention to the precise form disclosed.