# Patent

## Title
Functional safety in a vehicle networking system

## Abstract

Disclosed are systems, methods, and non-transitory computer-readable media for functional safety of computer networking systems implemented in vehicles. A functional safety system analyzes diagnostic data describing data packet transmissions in a vehicle networking system during a testing mode. The data packet transmissions include predetermined data packet sequences for testing a network feature of the vehicle networking system. The functional safety system determines, based on the diagnostic data, that the network feature of the vehicle networking system is not performing as expected, and generates a functional safety report indicating that the network feature of the vehicle networking system is not performing as expected. The functional safety report including at least a portion of the diagnostic data.

## Background
TECHNICAL FIELD
An embodiment of the present subject matter relates generally to computing and networking systems implemented in vehicles and, more specifically, to functional safety of computer networking systems implemented in vehicles.
BACKGROUND
Functional safety is the part of the overall safety of a system or piece of equipment that depends on automatic protection operating correctly in response to its inputs or failure in a predictable manner (e.g., fail-safe). The automatic protection system should be designed to properly handle likely human errors, hardware failures and operational or environmental stress. Functional safety is particularly important in relation to vehicles where an error may cause catastrophic injury.
Modern vehicles include many computer managed features. For example, vehicles include computers that monitor and/or control engine emissions, tire pressure, throttle position, engine temperature, spark plugs, fuel injection, automatic transmission, anti-lock brakes, automated driving, etc. Vehicles also include computers that manage non-critical luxury functions, such as keyless entry, climate control, motorized seats and mirrors, entertainment systems (e.g., radio, compact disk player), cruise control, etc.
To provide these computer managed features, vehicles are equipped with multiple sensors that continuously gather data and provide the data to computers included in the vehicle which in turn provide control command for actuators. For example, a computer that manages the anti-lock brake system uses data gathered from sensors located on the tires that read wheel speed and control the brake system. As another example, a computer that manages the climate control system gathers data from temperature sensors. Computers that manage advanced functions, such as automated driving, gather data from multiple sensors located at various points on the vehicle to control steering wheel, brakes, warning systems, etc.
One technical issue faced when implementing computer managed features in vehicles is available bandwidth for transmitting data. Vehicles are equipped with limited networking ability (e.g., wiring) to transmit data between the various computers and sensors located within the vehicle. This limited bandwidth may cause system latency through various portions of the network. This becomes an important issue when providing mission critical features, such as automated driving, that rely on time-sensitive data to make real-time decisions. For example, an automated driving system uses real-time sensor data gathered from multiple sensors (e.g, camera, sonar, radar, lidar, etc.) to determine the current surroundings of the vehicle and guide the direction of the vehicle accordingly. Too much Network latency can potentially result in the automated driving system functioning without the data needed to accurately determine the vehicles surrounding, which may lead to a collision.
Current systems address this issue with network features that prioritize data for mission critical functions. For example, the network features provide priority to data packets being used for mission critical features such as automated driving over data packets being used for non-critical functions such as the entertainment system. While these network features provide a solution, ensuring that these features are performing as desired is difficult. Accordingly, improvements are needed.



BRIEF DESCRIPTION OF THE DRAWINGS
Various ones of the appended drawings merely illustrate example embodiments of the present disclosure and cannot be considered as limiting its scope.
FIG. 1 shows a vehicle networking system, according to certain example embodiments.
FIG. 2 is a block diagram of a functional safety system, according to certain example embodiments.
FIG. 3 is a block diagram of a management module, according to certain example embodiments.
FIG. 4 is a flowchart showing a method of initiating a testing mode in a vehicle networking system, according to certain example embodiments.
FIG. 5 is a flowchart showing a method of analyzing diagnostic data of a testing mode in a vehicle networking system, according to certain example embodiments.
FIG. 6 is a diagrammatic representation of a machine in the example form of a computer system within which a set of instructions for causing the machine to perform any one or more of the methodologies discussed herein may be executed.



DETAILED DESCRIPTION
In the following description, for purposes of explanation, various details are set forth in order to provide a thorough understanding of some example embodiments. It will be apparent, however, to one skilled in the art, that the present subject matter may be practiced without these specific details, or with slight alterations.
Disclosed are systems, methods, and non-transitory computer-readable media for functional safety of computer networking systems implemented in vehicles (e.g., vehicle networking systems). Functional safety is the part of the overall safety of a system or piece of equipment that depends on automatic protection operating correctly in response to its inputs or failure in a predictable manner (e.g., fail-safe). The automatic protection system should be designed to properly handle likely human errors, hardware failures and operational or environmental stress. Functional safety is particularly important in relation to vehicles where an error may cause catastrophic injury to the vehicle passengers.
In vehicle networking systems, available bandwidth is limited because vehicles are equipped with limited wiring for transmitting data between computers, sensors, actuators, etc., located within the vehicle. Accordingly, vehicle networking systems include network features that are designed to prioritize transmission of certain types of data packets to ensure optimal performance of mission critical features. For example, various functions in time-sensitive networking (TSN) standards (e.g. IEEE 802.1) are designed to guarantee an upper limit in the latency of packet transmission in specific flows for pairs of source and destination nodes in an Ethernet network and provide the required quality of service (QoS) in an automotive network environment.
A functional safety system implemented in a vehicle networking system ensures proper performance of these network features by monitoring the state of nodes (e.g., hardware and/or software elements) of the vehicle networking system as data packets flow within the vehicle networking system to test the networking features. The functional safety system can use data gathered during a testing mode and/or normal operation of the vehicle to ensure that the implemented networking features are behaving as expected, thereby providing the high level of functional safety that is needed within vehicle networking systems.
Some networking features are stressed under certain traffic patterns while in a specific configuration state (e.g., specific configuration of hardware and software elements of the vehicle networking system). These types of situations may happen under very rare scenarios. To test these networking features and ensure that they are operating as expected, the functional safety system initiates testing modes during which various nodes of the vehicle networking system are configured into specified states and specified traffic patterns are transmitted to recreate scenarios in which the networking features are stressed. The functional safety system monitors performance of the vehicle networking system during the testing mode to determine whether the stressed network features are operating as expected.
The functional safety system periodically tests the vehicle networking system to ensure that the included network features, such as network traffic prioritization, are performing as expected. For example, the functional safety system periodically initiates testing modes during which controlled network traffic is transmitted within the vehicle networking system to exercise and stress various network features. The functional safety system gathers diagnostic data describing data packet transmissions during the testing mode and analyzes the diagnostic data to determine whether the nodes (e.g., hardware and/or software) in the vehicle networking system are performing as expected. For example, the functional safety system compares the diagnostic data to expected diagnostic data based on the controlled network traffic to determine whether the exercised network features performed as expected. The functional safety system may also gather diagnostic data describing data packet transmissions during regular operation of the vehicle networking system and perform similar functionality. For example, the functional safety system may compare the diagnostic data to expected diagnostic data based on performance and/or operation of the vehicle while the diagnostic data was gathered.
In some embodiments, each node (e.g., hardware and/or software element) of the vehicle networking system is capable of checking logging key information as data packets traverse through the node, such as data describing the data packet, information describing the state of the node, and the like. The logged information may include the time of arrival of the data packet, the time of departure of the data packet, the size of the data packet, the header of the data packet, source address, destination address, filter matches, check sums, errors, interrupt triggers, the encapsulation of the data packet, and the like. The state of the node may include the depth of the queues, the credit or token of the traffic shapers, the state of the gates or state machine or software code location, etc.
To initiate a testing mode, the functional safety system includes preset mechanisms that configure the vehicle networking system into a predetermined configuration state and programmable packet injectors that transmit synchronized sequences of predetermined data packets during the testing mode. The packet injectors transmit data packets according to a programmable list. Each entry of the programmable list may include information describing each test packet to be transmitted during a testing mode. For example, the information may include the size of the packet, the destination for the packet, other header components of the packet, the time to send the packet (e,g., an absolute time for the first entry with specified incremental time for the following entries), and the like. Once the programmable list has been exhausted (e.g., each listed packet has been transmitted), the packet injector may be programmed to halt or repeat transmission of data packets according to the programmable list after a specified delay.
Similarly, certain nodes in the vehicle networking system may be configurable into specified states based on a list of preset configurations. Each entry of the list can identify which state should be reset with what value and at what time. Once the list is exhausted, the element may be programmed to stop presetting its state or continue from the top of the list. Since the relative timing of data packets plays an important role in how the network elements behave, it is important to have the capability to synchronize the test traffic generators with each other and with the configuration state of the network elements. Accordingly, the programmable packet injectors and the preset mechanisms operate according to internal clocks that are synchronized using a timing protocol, such as the Precision Timing Protocol (PTP) or its generalized version gPTP.
Each programmable packet injector receives a sequence of data packets to be transmitted by the respective packet injector, as well as times at which the data packets are to be transmitted. The programmable packet injectors transmit the data packets at the corresponding times based on the synchronized internal clocks, thereby creating the desired network traffic to test network features of the vehicle computing network.
The functional safety system further includes checking and logging mechanisms that detect and log transmission of data packets within the vehicle networking system. For example, the logging mechanisms log relevant hardware and software information during the testing mode and/or during regular operation of the vehicle networking system. The logged diagnostic data describes data packet transmissions through the vehicle networking system. For example, each logging mechanism logs data packets as they travel through the logging mechanism (e.g., packet arrival time, departure time, buffer backlog, credit, gate states, etc.). The functional safety system then gathers the logged diagnostic data from the logging mechanisms. As another example, the logging mechanisms may add the diagnostic data to the data packets as they traverse through the vehicle networking system. In this type of embodiment, the functional safety system may extract the diagnostic data from the data packets themselves. The packets may also be programmed to contain certain types of errors such as CRC to ensure checkers can detect the errors, log them, and provide interrupts or triggers for hardware or software to take corrective action such as placing the vehicle in a safe state.
In either case, the functional safety system analyzes the diagnostic data to characterize performance of the vehicle networking system and determine whether the vehicle networking system is performing as desired. For example, the functional safety system may use the logged diagnostic data to determine the time and order in which data packets were received and transmitted by various nodes in the vehicle networking system and compare the determined time and order to an expected order in which the data packers were to be received and transmitted. This can ensure that performance of the vehicle networking system is satisfying target latency requirements. Additionally, the functional safety system gathers information from the function elements of each network node to ensure that each network node is operating within its expected range or performing its desired function. For instance, the depth of the buffers, the credit in traffic shapers, and the state of the gates and queues can be monitored to ensure proper operation.
FIG. 1 shows a vehicle networking system 100, according to some example embodiments. To avoid obscuring the inventive subject matter with unnecessary detail, various functional components (e.g., modules, mechanisms, devices, nodes, etc.) that are not germane to conveying an understanding of the inventive subject matter have been omitted from FIG. 1. However, a skilled artisan will readily recognize that various additional functional components may be supported by the vehicle networking system 100 to facilitate additional functionality that is not specifically described herein.
The vehicle networking system 100 is a collection of nodes distributed within a vehicle (e.g., automobile) and interconnected via a communication network 102 comprising communication links and segments for transporting data between end points, such as sensors 104, actuators, and computing devices 106. Each node in the vehicle networking system 100 may be a redistribution point or an endpoint that can receive, create, store or send data along distributed network routes. Each node, whether an endpoint or a redistribution point, has either a programmed or engineered capability to recognize, process and forward data transmissions to other nodes in the vehicle networking system 100. Examples of nodes include sensors 104, displays, actuators, computing devices 106, routers (not shown), switches (not shown), etc.
The communication network 102 is implemented using any number of nodes and communications links, including one or more wired communication links, one or more wireless communication links, or any combination thereof. Additionally, the communication network 102 is configured to support the transmission of data formatted using any number of protocols.
Multiple sensors 104, computing devices 106, and actuators 110 can be connected to the communication network 102. A computing device 106 is any type of general computing device capable of network communication with other computing devices. For example, a computing device 106 can include some or all of the features, components, and peripherals of the computing system 600 shown in FIG. 6.
To facilitate communication with other computing devices 106, a computing device 106 includes a communication interface configured to receive a communication, such as a request, data, and the like, from another computing device 106 or sensor 104 in network communication with the computing device 106 and pass the communication along to an appropriate module running on the computing device 106. The communication interface also sends a communication to another computing device 106 in network communication with the computing device 106. The sensors 104 may be any type of sensors used to capture data. For example, the sensors 104 may include engine speed sensors, fuel temperature sensors, voltage sensors, pressure sensors, radar sensors, light detection and ranging (LIDAR) sensors, imaging sensors (e.g., camera, video camera), etc. The sensors 104 capture data describing performance of a vehicle and its surroundings and provide the captured data to one or more of the computing devices 106.
The computing devices 106 use the captured sensor data to provide various computer managed features. For example, the computing devices 106 may use the gathered sensor data to monitor and/or control engine emissions, tire pressure, throttle position, engine temperature, spark plugs, fuel injection, automatic transmission, anti-lock brakes, automated driving, etc. The computing devices 106 may also use the gathered sensor data to provide non-critical luxury functions, such as keyless entry, climate control, motorized seats and mirrors, entertainment system (e.g., radio, compact disk player), cruise control, etc.
The actuators 110 are hardware components that are responsible for executing a mechanical/electrical action, such as moving and controlling a mechanism or system. Examples of actuators 110 include an on/off switch (e.g. door locks, lights, etc.), electric motors (e.g. side mirror, seat and steering wheel control), etc. The computing devices 106 transmit commands to the actuators to perform a specified action.
As previously explained, the communication network 102 may have limited available bandwidth for transmitting data. Accordingly, the vehicle networking system 100 is designed to prioritize transmission of certain types of data packets to ensure optimal performance of mission critical features. For example, the various nodes included in the communication network 102 may provide priority to sensor data used for providing automated driving to ensure that the computing device 106 facilitating the automated driving function is concurrently receiving sensor data captured from each sensor at a given time.
As shown, the vehicle networking system 100 includes a functional safety system 108 that provides functional safety of the networking features included in the vehicle networking system 100. The functional safety system 108 accomplishes this by periodically testing the vehicle networking system 100 to ensure that the included network features, such as network traffic prioritization, are performing as expected.
One component of the functional safety system 108 is the capability to monitor, check, and log diagnostic data about packet traffic along with the state of functional elements of the vehicle networking system 100 as the data packets traverse the various nodes of the vehicle networking system 100. This diagnostic data may be gathered for all or some data packets as they traverse through all or some of the functional elements of the vehicle networking system 100. The diagnostic data that the functional elements record may include: arrival and departure time of the packets, header and other critical components of the packet, the critical state of the functional element (such as the depth of queues, the credit or tokens of the traffic shapers, etc.) as the data packet was processed by the functional element.
The diagnostic data may be forwarded through dedicated diagnostic and management ports to the functional safety system 108. Alternatively, the diagnostic data may be transmitted over a logical channel (e.g., Operation Administration and Maintenance (OAM)) over the main data port. functional safety system 108 may continuously monitor the network for this diagnostic data. Alternatively, the functional safety system 108 may periodically command (e.g., through an OAM channel) the network nodes to log and send their diagnostic data. As another example, the diagnostic data may be recorded within the data packets as they traverse through the vehicle networking system 100 and the functional safety system 108 may extract the diagnostic data form the data packets.
The functional safety system 108 may monitor the network as the network is operating normally with its typical data traffic. Alternatively, the functional safety system 108 may initiate (e.g., through a multicast request over an OAM channel) a special testing mode during which controlled network traffic is generated and transmitted within the vehicle networking system 100 to exercise and stress various critical network features. In this special testing mode, the functional safety system 108 may also send a request to preset some or all states of some or all function elements of the network. For instance, the functional safety system 108 may request to preset the credit of a certain credit-based traffic shaper. The request to generate the test traffic and preset the state of function elements may be carried over an OAM channel. The request should include the details of test packet generation and the state of elements across the network. The request also carries time information so that the test packet generators are synchronized alongside with the time of preset of the function elements. The synchronization of disjoint element of network is achieved through a timing mechanism such as Precision Timing Protocol (PTP).
The state of a functional element of the network as a packet traverses through it may be recorded in the corresponding node as the diagnostic information and then sent to the functional safety system as a separate communication between each node that the packet travel through and the functional safety system, or the information may be embedded in the packet itself. The final node that packet goes through (either the destination or the node that drops the packet) is responsible to extract the diagnostic information and perhaps check the information from the packet before passing the data packet to higher layers and passing the diagnostic information to functional safety system. The diagnostic information may include the information about the state of the function elements (buffers, traffic shapers, gates, etc.), the arrival and departure time of the packet, size of the packet, errors and other relevant metadata for the packet.
The functional safety system may request the network to gather and send the diagnostic information during normal operation. It may also set up the network in a stress test scenario during the down time of the network (e.g. when car is idle while stopped at a red light). The stress test includes a prescribed flow of packet traffic injected artificially through packet injectors. It also includes presetting the function elements to a stress configuration. The artificial packet traffic and the preset of the configuration of the functional elements are all done in a synchronous fashion. The functional safety system gathers the diagnostic information at the end of the stress test to confirm that packet traffic flow and operating point of the functional elements meet their design target to ensure no failure in network functionalities.
While the functional safety system 108 is shown separately from the sensors 104, computing devices 106 and communication network 102, this is just for ease of explanation and is not meant to limiting. The functional safety system 108 may be incorporated throughout the vehicle networking system 100, meaning that the various components of the functional safety system 108 may be incorporated into any of the nodes of the vehicle networking system 100.
The functional safety system 108 includes preset mechanisms that configure the vehicle networking system into a predetermined configuration state for a testing mode and programmable packet injectors that can be instructed to transmit synchronized sequences of predetermined data packets during a testing mode. The programmable packet injectors operate according to internal clocks that are synchronized using a timing protocol, such as the Precision Timing Protocol (PTP). Each programmable packet injector receives a sequence of data packets to be transmitted by the respective packet injector, as well as times at which the data packets are to be transmitted. The programmable packet injectors transmit the data packets at the corresponding times based on the synchronized internal clocks, thereby creating the desired network traffic to test the vehicle networking system 100.
The functional safety system 108 further includes logging mechanisms that detect, check, and log transmission of data packets within the vehicle networking system 100. For example, the logging mechanisms log relevant hardware information during the testing mode. The logged diagnostic data describes data packet transmissions through the vehicle networking system 100 during the testing mode. For example, each logging mechanism logs data packets as they travel through the logging mechanism (e.g., packet arrival time, departure time, buffer backlog, credit of traffic shapers, gate states, etc.).
The functional safety system 108 gathers the logged diagnostic data from the logging mechanisms and analyzes the diagnostic data to characterize performance of the vehicle networking system 100 and determine whether the vehicle networking system 100 is performing as desired. For example, the functional safety system 108 may use the logged diagnostic data to determine an order in which data packets were received and transmitted by various nodes in the vehicle networking system 100 and compare the determined order to an expected order in which the data packers were to be received and transmitted. The functional safety system 108 may generate a notification that a tested networking feature is not performing as expected. For example, the notification may be presented on a display of the vehicle or transmitted to an administrator or other predetermined user or users. The functional safety system 108 may also generate a functional safety report that indicates that the tested network feature is not performing as expected. The functional safety report may include diagnostic data describing performance during the testing mode.
In some embodiments, the functional safety system 108 may reconfigure nodes of the vehicle networking system 100 in an attempt to cause the network feature to perform as expected. After reconfiguring the nodes, the functional safety system 108 may initiate subsequent testing modes to determine whether reconfiguring the nodes was successful.
FIG. 2 is a block diagram of the functional safety system 108, according to some example embodiments. To avoid obscuring the inventive subject matter with unnecessary detail, various functional components (e.g., modules, mechanisms, devices, nodes, etc.) that are not germane to conveying an understanding of the inventive subject matter have been omitted from FIG. 2. However, a skilled artisan will readily recognize that various additional functional components may be supported by the functional safety system 108 to facilitate additional functionality that is not specifically described herein. Furthermore, the various functional modules depicted in FIG. 2 may reside on a single computing device/node or may be distributed across several computing devices/nodes in various arrangements. Accordingly, the described functionality of the functional safety system 108 may be performed by multiple nodes of the vehicle networking system 100. For example, nodes that log diagnostic data as a data packet traverses the node may also perform a check of the data for irregularities.
As shown, the functional safety system 108 includes a management module 202, programmable packet injectors 204, preset mechanisms 206, logging mechanisms 208, and a synchronization mechanism 210. The management module 202 manages the functionality of the functional safety system 108. For example, the management module 202 causes execution of testing modes in which various network features of the vehicle networking system 100 are exercised and stressed to ensure that the network features are performing as expected. During a testing mode, the management module 202 may cause the vehicle networking system 100 to be configured into a predetermined configuration state corresponding to the testing mode. Configuring the vehicle networking system 100 into a configuration state includes configuring the state of specified nodes in the vehicle networking system 100 to properly test one or more network functions of the vehicle networking system 100. For example, configuring the vehicle networking system 100 into a configuration state may include configuring specified hardware first in first outs (FIFOs), data buffers, etc.
The management module 202 configures the vehicle networking system 100 using preset mechanisms 206. The present mechanisms 206 are implemented within the vehicle networking system 100 and are configured to reconfigure the state of nodes in the vehicle networking system 100. The management module 202 transmits commands to one or more of the preset mechanisms 206 to configure the vehicle networking system 100. The commands include instructions on how each respective preset mechanism 206 should configure one or more nodes of the vehicle networking system 100 for a given testing mode. The functionality of the preset mechanisms 206 are described in greater detail below.
In addition to presetting the functional elements of the network in the vehicle networking system 100 into the appropriate configuration state for a testing mode, the management module 202 causes transmission of sequences of data packets within the vehicle networking system 100 to stress and exercise specified features of the vehicle networking system 100. For example, the management module 202 transmits commands to one or more of the programmable packet injectors 204 to initiate transmission of the sequence of data packets. The command may include data describing the sequence of data packets, such as the size of the individual data packets, header information (e.g., destination address, priority, etc.), payload data, etc., as well as data describing how the data packets are to be transmitted. For example, the command may include a time at which the programmable packet injectors 204 should initiate transmission of the sequence of data packets and data identifying the sequence in which the data packets are to be transmitted and/or the times at which individual data packets are to be transmitted.
The management module 202 may transmit the command to initiate the testing mode and data describing the sequence of data packets as a single message or as separate messages. Further, the management module 202 may transmit the data describing the sequence of data packets using a messaging protocol such as Operation Administration and Maintenance (OAM). For example, the data describing the sequence of data packets may be included in the payload of an OAM message. The functionality of the programmable data packet injectors is described in greater detail below.
In addition to causing execution of the testing modes, the management module 202 gathers diagnostic data describing behavior and performance of the vehicle networking system 100 during the testing mode. The diagnostic data describes how the data packet traversed through the functional elements of the network in the vehicle networking system 100 during the testing mode. The diagnostic data may also include information about the state of the functional elements as each packet was traversing through them. The management module 202 analyzes the diagnostic data to determine whether the tested networking features are behaving as expected. For example, the management module 202 compares the diagnostic data to data describing expected performance of the vehicle networking system 100 during the testing mode.
The management module 202 further generates a functional safety report describing performance of the vehicle networking system 100 during the testing mode. For example, the functional safety report indicates that the tested network feature is not performing as expected and includes diagnostic data describing performance of the vehicle networking system 100 during the testing mode.
If the diagnostic information indicate an unexpected behavior which deemed to be a safety issue a corrective action may have to take place. For instance, the driver may be notified to stop the car. In some embodiments, the management module 202 may also reconfigure nodes of the vehicle networking system 100 in an attempt to cause the network feature to recover from failure and perform as expected. For instance, if a link in the network is failed then the network may be reconfigured to use an alternate route for data traffic. After reconfiguring the nodes, the management module 202 may initiate subsequent testing modes to determine whether reconfiguring the nodes was successful. The management module 202 may also transmit notifications indicating any detected issues with the tested network features of the vehicle networking system 100. The functionality of the management module 202 is described in greater detail below in references to FIG. 3.
The programmable packet injectors 204 transmit sequences of data packets during a testing mode. Each programmable packet injector 204 may be implement in a node in the vehicle networking system 100. That is, a programmable packet injector 204 may be implemented as part of any node in the network such a sensor node, a computing node, or switching (or bridging, routing) node, etc. The programmable packet injectors 204 receive commands from the management module 202 to execute a testing mode and execute the testing mode in accordance with data included in the command. For example, the programmable packet injectors 204 transmit a sequence of data packets described in a command received from the management module 202. As explained earlier, the commands include data describing the size, payload, header, transmission time, etc., for each data packet in the sequence of data packets. The programmable packet injectors 204 transmit the sequence of data packets according to the provided description in the command.
The preset mechanisms 206 configure the state of some or all functional elements of some or all networking nodes in the vehicle networking system 100. Each preset mechanism 206 may be implement as additional software or hardware features in some or all nodes (e.g., sensors, switches, etc.) in the vehicle networking system 100. The preset mechanisms 206 receive commands from the management module 202 to configure the vehicle networking system 100 into a configuration state for a testing mode. The command includes data identifying the nodes to be configured and any corresponding value. For example, the command may identify a buffer to be configured as well as token values for configuring the identified buffer. The command may also include data identifying a time at which a preset mechanism 206 is to perform the configuration. The present mechanisms 206 configure the functional elements of the network of the vehicle networking system 100 according to the provided description in the command.
During a testing mode, synchronization amongst the various programmable packet injectors 204 and preset mechanisms 206 is crucial to properly test a specified network feature of the vehicle networking system 100. To create the desired network traffic that causes the network feature to be triggered, configuration of the affected nodes of the vehicle networking system 100 and transmission of the sequences of data packets should be synchronized precisely. Accordingly, the programmable packet injectors 204 and preset mechanisms 206 support a time-based triggering mechanism that allows for synchronization. For example, the programmable packet injectors 204 and preset mechanisms 206 may include or have access to internal clocks that have been synchronized. For example, the internal clocks may be synchronized by the synchronization mechanism 210 using a timing protocol, such as the Precision Timing Protocol (PTP). Accordingly, the programmable packet injectors 204 and preset mechanisms 206 use the internal clocks available to them to ensure that configuration of the vehicle networking system 100 and transmission of the sequences of data packets are synchronized.
The logging mechanisms 208 record the diagnostic data captured during a testing mode. Each logging mechanisms 208 may be a standalone hardware or software feature in a networking node in the vehicle networking system 100. Each logging mechanism 208 logs relevant hardware information as a data packet travels through the respective logging mechanism 208. For example, the logging mechanisms 208 may log the packet arrival time, departure time, buffer backlog, credit, gate states, etc.
The synchronization mechanism 210 synchronizes multiple internal clocks in the vehicle networking system 100. Various hardware nodes in the vehicle networking system 100 may have access to their own internal clock. Accordingly, functions performed by the node may be synchronized using their respective internal clock. However, the internal clocks on the varying nodes may not be synchronized with each other. This may lead to issues when conducting a testing mode. Accordingly, the synchronization mechanism 210 synchronizes the internal clocks using a timing protocol, such as PTP or gPTP.
What is described above is a stress test configuration where the network is preset to a known configuration and traffic patterns are controlled through packet injectors. In this case, the behavior of the function elements of the network are monitored through collection of diagnostic information to detect potential anomalies or failures. This approach can put the network in a stress condition for easy identification of network vulnerabilities and failures. Alternatively, the function safety system can continuously or intermittently monitor the operation of the functional elements during normal network configuration with normal data traffic flow. Although this approach does not stress the network it still can identify abnormalities in the operation of the function elements of network that are visible during normal operation. Like the previous scenario, if an unexpected behavior is deemed a safety issue, the functional safety system may issue a corrective action.
The diagnostic information may be gathered in two different schemes. Each functional element may gather its own diagnostic information as it processes multiple packets passing through. This collection of diagnostic information provides a clear picture of possible interaction between the packets and the network element. Alternatively, the diagnostic information may be appended to the packet itself as it passes through a functional element. The diagnostic information is extracted from the packet before its payload is passed to the next layer of the network. This happens in the last node of the network for that packet. This last node is either the destination of the packet, or the node that dropped the packet. The diagnostic information that is embedded within the packet can provide a more clear diagnostic picture of how multiple network elements behaved as the packet traveled through those elements in the network.
FIG. 3 is a block diagram of the management module 202, according to some example embodiments. To avoid obscuring the inventive subject matter with unnecessary detail, various functional components (e.g., modules, mechanisms, devices, nodes, etc.) that are not germane to conveying an understanding of the inventive subject matter have been omitted from FIG. 3. However, a skilled artisan will readily recognize that various additional functional components may be supported by the management module 202 to facilitate additional functionality that is not specifically described herein. Furthermore, the various functional modules depicted in FIG. 3 may reside on a single computing device, node, switch, etc., or may be distributed across several computing devices, nodes, switches, etc., in various arrangements. For example, instances of the management module 202 may be implemented on multiple switches included in the vehicle networking system 100.
As shown, the management module 202 includes a testing determination module 302, a testing mode initiation module 304, a diagnostic data collection module 306, a diagnostic data analysis module 308, a report generation module 310, and a reconfiguration module 312.
The testing determination module 302 determines when to initiate a testing mode in the vehicle networking system 100. The test may be non-intrusive and consist solely of collection of diagnostic data during normal data traffic. It may also, however, be intrusive and include additional test traffic for better characterization of the network. Execution of the intrusive testing mode may be preferable during periods of time when the vehicle is stationary, idle, or in low use. The testing determination module 302 monitors use of the vehicle to determine when the vehicle is in an appropriate state to execute a testing mode. For example, the testing determination module 302 receives data from one or more sensors 104 of the vehicle networking system 100 to determine the current state of the vehicle, such as whether the vehicle is idle, moving, etc.
The testing determination module 302 then determines whether the current state of the vehicle is an appropriate state in which a testing mode may be initiated. For example, the testing determination module 302 may have access to a listing of predetermined states in which a testing mode may be initiated. The listing mode may include varying states for different tests of the features of the vehicle networking system 100. Accordingly, a suitable state in which to execute a testing mode to test one feature of the vehicle networking system 100 may not be a suitable state in which to execute a testing mode to test another feature of the vehicle networking system 100.
The testing determination module 302 may further determine when to execute testing modes based on a predetermined timing schedule and/or prioritization of the various testing modes. That is, the testing determination module 302 may determine whether to execute a testing mode or which testing mode to execute based on a period of time that has elapsed since previous execution of the testing modes and/or relative importance of the feature to be tested. Accordingly, the testing determination module 302 may determine to execute a testing mode if both the vehicle is in a suitable state to execute the testing mode and at least a threshold period of time has elapsed since the testing mode was previously executed. Further, in situations in which the testing determination module 302 may have to select which testing mode to initiate, the testing determination module 302 may use the predetermined prioritization to select the testing mode that tests the feature that is determined to have greater importance. Accordingly, testing of mission critical features may be given higher priority than testing of other features.
In response to determining that a testing mode should be initiated, the testing determination module 302 notifies the testing mode initiation module 304 to execute the testing mode. The notification provided by the testing determination module 302 to the testing mode initiation module 304 may include data identifying the testing modes that should be executed. For example, the notification may include a unique identifier that identifies the testing modes to be executed.
The testing mode initiation module 304 initiates a testing mode in response to receiving a notification from the testing determination module 302. To initiate the testing mode, the testing mode initiation module 304 initially configures the vehicle networking system 100 for execution of the testing mode. For example, the testing mode initiation module 304 identifies a configuration state in which to configure the nodes of the vehicle networking system 100 to execute the testing mode and communicates with the appropriate preset mechanisms 206 to configure the vehicle networking system 100 accordingly. For example, the configuration state may include specified configurations for the hardware first in first outs (FIFOs), data buffers, etc.
The testing initiation module 304 identifies the configuration state in which to configure the vehicle networking system 100 for a given testing mode based on a predetermined listing of configuration states that correspond to the various testing modes. For example, the predetermined listing of configuration states may list the unique identifiers associated with the various testing modes along with the configuration state corresponding to the testing mode. The configuration states listed in the predetermined listing of configuration states may include data identifying the preset mechanisms 206 that the testing module initiation module 304 should communicate with to configure the vehicle networking system 100 into the appropriate configuration state, as well as data describing the configuration state, such as the nodes to be configured and any values used to configure the nodes. Additionally, the predetermined listing of configuration states may include command messages to be transmitted to configure the vehicle networking system 100 into the configuration state. Accordingly, the testing module initiation module 304 uses the data included in the predetermined listing of configuration states to generate and transmit commands to the preset mechanisms 206 or causes transmission of the commands included in the predetermined listing of configuration states.
The testing mode initiation module 304 also identifies the programmable packet injectors 204 to use to initiate the testing mode as well as the sequences of data packets to be transmitted by each of the identified programmable packet injectors 204. For example, the testing mode initiation module 304 uses a listing of data packet sequences that correspond to the various testing modes. For example, the predetermined listing of data packet sequences may list the unique identifiers associated with the various testing modes along with the data packet sequences corresponding to the testing mode. The data packet sequences listed in the predetermined listing of data packet sequences may include data identifying the programmable packet injectors 204 that the testing module initiation module 304 should communicate with to initiate the testing mode, as well as data describing the data packet sequences that should be transmitted by each identified programmable packet injector during the testing mode. Additionally, the predetermined listing of data packet sequences may include command messages to be transmitted to the programmable data packet injectors 204 to initiate the testing mode. Accordingly, the testing module initiation module 304 uses the data included in the predetermined listing of data packet sequences to generate and transmit commands to the programmable packet injectors 204 or causes transmission of the commands included in the predetermined listing of data packet sequences.
In some embodiments, the testing mode initiation module 304 determines times at which the preset mechanisms 206 are to configure the vehicle networking system 100 and the data packet injectors 204 are to initiate the testing mode (e.g., begin transmission of the sequence of data packets). The testing mode initiation module 304 includes the determined times in the commands sent to the preset mechanisms 206 and the data packet injectors 204. As explained earlier, the preset mechanisms 206 and the data packet injectors 204 may have access to internal clocks that are synchronized using a timing protocol. Accordingly, the preset mechanisms 206 and the data packet injectors 204 use the times included in the commands along with the internal clocks to synchronize configuration of the vehicle networking system 100 and execution of the testing mode.
The diagnostic data collection module 306 gathers diagnostic data captured by the logging mechanisms 206 during the testing mode. The diagnostic data describes transmission of data packets, such as packet arrival times, packet departure times, components of packet header, buffer backlog, credit, gate states, etc.
The diagnostic data analysis module 308 analyzes the diagnostic data to determine whether the tested network functions are performing as expected. For example, the diagnostic data analysis module 308 may use the timestamp value (e.g., packet arrival and/or departure times) to determine and characterize performance of the vehicle networking system 100 during the testing mode, such as determining the latency in packet transmission or an order in which the sequence of data packets was transmitted and/or received by the various nodes of the vehicle networking system 100. The diagnostic data analysis module 308 may compare this determined sequence to an expected sequence based on the testing mode. The diagnostic data analysis module 308 identifies whether the latency is within its expected limits, or identifies discrepancies between the detected order in which data packets were received and the expected order in which the data packets were expected to be received to determine whether the tested network feature is performing as desired or expected.
The report generation module 310 generates a functional safety report based on the analysis of the diagnostic data analysis module 308. The functional safety report may include data describing the performance of the tested feature (e.g., whether the tested feature performed as expected) as well as the underlying diagnostic data used during the analysis. For example, the functional safety report may include data characterizing performance of the vehicle networking system 100 during the testing mode. The functional safety report may further include data indicating discrepancies between the determined performance and an expected performance of the vehicle networking system 100. In instances in which a tested network feature is determined to be faulty, the report generation module 310 may transmit or cause presentation of a warning notification indicating that the network feature is not performing as expected.
The reconfiguration module 312 reconfigures the vehicle networking system 100 in an attempt to correct network features that are not performing as expected or desired. Reconfiguring the vehicle networking system 100 may include modifying networking rules and/or policies implemented by the various nodes in the vehicle networking system 100. For example, the reconfiguration module 312 may readjust policies at network nodes to provide additional priority to certain types of data packets. As another example, the reconfiguration module 312 may adjust the routes used by the various nodes to transmit certain types of data.
The reconfiguration module 312 transmits commands to the individual network nodes to modify the networking rules and/or policies implemented by the respective nodes. The command identifies the modification to the networking rule and/or policy to be adjusted. In response to receiving the command, the network node adjusts the networking rule and/or policy as instructed.
The reconfiguration module 312 may determine how to reconfigure the vehicle networking system 100 based on a set or reconfiguration rules and an analyses of the diagnostic data collected during a testing mode. The set of reconfiguration rules dictate network reconfigurations to be executed based on various types of issues. The reconfiguration module 312 analyzes the diagnostic data to identify issues with performance of the tested networking features, such as data identifying the manner in which and/or the network nodes at which the tested network feature is failing to perform as expected. The reconfiguration module 312 uses the identified issues to identify the corresponding reconfiguration to perform from the set of reconfiguration rules. To determine whether a performed reconfiguration was successful in correcting the issue, the reconfiguration module 312 communicates with the testing mode initiation module 304 to execute a subsequent testing mode to test the network feature.
If no reconfiguration is identified for correction of the failure and if the failure is deemed to be a safety hazard then a corrective action at a higher layer may be taken. For instance, the failure may be identified to the driver to stop the car immediately.
FIG. 4 is a flowchart showing a method 400 of initiating a testing mode in a vehicle networking system 100, according to certain example embodiments. The method 400 may be embodied in computer readable instructions for execution by one or more processors such that the operations of the method 400 may be performed in part or in whole by the functional safety system 108; accordingly, the method 400 is described below by way of example with reference thereto. However, it shall be appreciated that at least some of the operations of the method 400 may be deployed on various other hardware configurations and the method 400 is not intended to be limited to the functional safety system 108.
At operation 402, the testing determination module 302 gathers sensor data describing a current state of the vehicle. The testing determination module 302 determines when to initiate a testing mode in the vehicle networking system 100. Execution of the testing mode may be preferable during periods of time when the vehicle is stationary, idle, or in low use. The testing determination module 302 monitors use to the vehicle to determine when the vehicle is in an appropriate state to execute a testing mode. For example, the testing determination module 302 receives data from one or more sensors 104 of the vehicle networking system 100 to determine the current state of the vehicle, such as whether the vehicle is idle, moving, etc.
At operation 404, the testing determination module 302 determines that the current state is a suitable state to execute a testing mode. For example, the testing determination module 302 may have access to a listing of predetermined states in which a testing mode may be initiated.
At operation 406, the testing mode initiation module 304 transmits commands to present mechanisms 206 to configure the vehicle networking system 100 to a configuration state. To initiate the testing mode, the testing mode initiation module 304 initially configures the vehicle networking system 100 for execution of the testing mode. For example, the testing module initiation module 304 identifies a configuration state in which to configure the nodes of the vehicle networking system 100 to execute the testing mode and communicates with the appropriate preset mechanisms 206 to configure the vehicle networking system 100 accordingly. For example, the configuration state may include specified configurations for the hardware first in first outs (FIFOs), data buffers, etc.
The testing module initiation module 304 identifies the configuration state in which to configure the vehicle networking system 100 for a given testing mode based on a predetermined listing of configuration states that correspond to the various testing modes. For example, the predetermined listing of configuration states may list the unique identifiers associated with the various testing modes along with the configuration state corresponding to the testing mode. The configuration states listed in the predetermined listing of configuration states may include data identifying the preset mechanisms 206 that the testing mode initiation module 304 should communicate with to configure the vehicle networking system 100 into the appropriate configuration state, as well as data describing the configuration state, such as the nodes to be configured and any values used to configure the nodes. Additionally, the predetermined listing of configuration states may include command messages to be transmitted to configure the vehicle networking system 100 into the configuration state. Accordingly, the testing module initiation module 304 uses the data included in the predetermined listing of configuration states to generate and transmit commands to the preset mechanisms 206 or causes transmission of the commands included in the predetermined listing of configuration states.
At operation 408, the testing mode initiation module 304 transmits commands to packet injectors 204 to execute a testing mode. The testing mode initiation module 304 identifies the programmable packet injectors 204 to use to initiate the testing mode as well as the sequences of data packets to be transmitted by each of the identified programmable packet injectors 204. For example, the testing mode initiation module 304 uses a listing of data packet sequences that correspond to the various testing modes. For example, the predetermined listing of data packet sequences may list the unique identifiers associated with the various testing modes along with the data packet sequences corresponding to the testing mode. The data packet sequences listed in the predetermined listing of data packet sequences may include data identifying the programmable packet injectors 204 that the testing module initiation module 304 should communicate with to initiate the testing mode, as well as data describing the data packet sequences that should be transmitted by each identified programmable packet injector during the testing mode. Additionally, the predetermined listing of data packet sequences may include command messages to be transmitted to the programmable data packet injectors 204 to initiate the testing mode. Accordingly, the testing mode initiation module 304 uses the data included in the predetermined listing of data packet sequences to generate and transmit commands to the programmable packet injectors 204 or causes transmission of the commands included in the predetermined listing of data packet sequences.
In some embodiments, the testing mode initiation module 304 determines times at which the preset mechanisms 206 are to configure the vehicle networking system 100 and the data packet injectors 204 are to initiate the testing mode (e.g., begin transmission of the sequence of data packets). The testing mode initiation module 304 includes the determined times in the commands sent to the preset mechanisms 206 and the data packet injectors 204. As explained earlier, the preset mechanisms 206 and the data packet injectors 204 may include access to internal clocks that are synchronized using a timing protocol. Accordingly, the preset mechanisms 206 and the data packet injectors 204 use the times included in the commands along with the internal clocks to synchronize configuration of the vehicle networking system 100 and execution of the testing mode.
FIG. 5 is a flowchart showing a method 500 of providing functional safety in a vehicle networking system 100, according to certain example embodiments. The method 500 may be embodied in computer readable instructions for execution by one or more processors such that the operations of the method 500 may be performed in part or in whole by the functional safety system 108; accordingly, the method 500 is described below by way of example with reference thereto. However, it shall be appreciated that at least some of the operations of the method 500 may be deployed on various other hardware configurations and the method 500 is not intended to be limited to the functional safety system 108.
At operation 502, the testing mode initiation module 304 executes a testing mode to test a network feature. To initiate the testing mode, the testing mode initiation module 304 initially configures the vehicle networking system 100 for execution of the testing mode. For example, the testing module initiation module 304 identifies a configuration state in which to configure the nodes of the vehicle networking system 100 to execute the testing mode and communicates with the appropriate preset mechanisms 206 to configure the vehicle networking system 100 accordingly. For example, the configuration state may include specified configurations for the hardware first in first outs (FIFOs), data buffers, etc.
The testing initiation module 304 identifies the configuration state in which to configure the vehicle networking system 100 for a given testing mode based on a predetermined listing of configuration states that correspond to the various testing modes. For example, the predetermined listing of configuration states may list the unique identifiers associated with the various testing modes along with the configuration state corresponding to the testing mode. The configuration states listed in the predetermined listing of configuration states may include data identifying the preset mechanisms 206 that the testing module initiation module 304 should communicate with to configure the vehicle networking system 100 into the appropriate configuration state, as well as data describing the configuration state, such as the nodes to be configured and any values used to configure the nodes. Additionally, the predetermined listing of configuration states may include command messages to be transmitted to configure the vehicle networking system 100 into the configuration state. Accordingly, the testing module initiation module 304 uses the data included in the predetermined listing of configuration states to generate and transmit commands to the preset mechanisms 206 or causes transmission of the commands included in the predetermined listing of configuration states.
The testing mode initiation module 304 also identifies the programmable packet injectors 204 to use to initiate the testing mode as well as the sequences of data packets to be transmitted by each of the identified programmable packet injectors 204. For example, the testing mode initiation module 304 uses a listing of data packet sequences that correspond to the various testing modes. For example, the predetermined listing of data packet sequences may list the unique identifiers associated with the various testing modes along with the data packet sequences corresponding to the testing mode. The data packet sequences listed in the predetermined listing of data packet sequences may include data identifying the programmable packet injectors 204 that the testing module initiation module 304 should communicate with to initiate the testing mode, as well as data describing the data packet sequences that should be transmitted by each identified programmable packet injector during the testing mode. Additionally, the predetermined listing of data packet sequences may include command messages to be transmitted to the programmable data packet injectors 204 to initiate the testing mode. Accordingly, the testing module initiation module 304 uses the data included in the predetermined listing of data packet sequences to generate and transmit commands to the programmable packet injectors 204 or causes transmission of the commands included in the predetermined listing of data packet sequences.
In some embodiments, the testing mode initiation module 304 determines times at which the preset mechanisms 206 are to configure the vehicle networking system 100 and the data packet injectors 204 are to initiate the testing mode (e.g., begin transmission of the sequence of data packets). The testing mode initiation module 304 includes the determined times in the commands sent to the preset mechanisms 206 and the data packet injectors 204. As explained earlier, the preset mechanisms 206 and the data packet injectors 204 may have access to internal clocks that are synchronized using a timing protocol. Accordingly, the preset mechanisms 206 and the data packet injectors 204 use the times included in the commands along with the internal clocks to synchronize configuration of the vehicle networking system 100 and execution of the testing mode.
At operation 504, the diagnostic data analysis module 308 analyzes diagnostic data gathered during the testing mode. For example, the diagnostic data analysis module 308 analyzes the diagnostic data to determine whether the tested network functions are performing as expected. The diagnostic data analysis module 308 may use the timestamp value (e.g., packet arrival and/or departure times) to determine and characterize performance of the vehicle networking system 100 during the testing mode, such as determining an order in which the sequence of data packets was transmitted and/or received by the various nodes of the vehicle networking system 100.
At operation 506, the diagnostic data analysis module 308 determines, from the diagnostic data, that the network feature is not performing as expected. For example, the diagnostic data analysis module 308 may compare this determined sequence to an expected sequence based on the testing mode. The diagnostic data analysis module 308 identifies discrepancies between the detected order in which data packets were received and the expected order in which the data packets were expected to be received to determine whether the tested network feature is performing as desired or expected.
At operation 508, the report generation module 310 generates a functional safety report indicating that the network feature is not performing as expected. The report generation module 310 generates a functional safety report based on the analysis of the diagnostic data analysis module 308. The functional safety report may include data describing the performance of the tested feature (e.g., whether the tested feature performed as expected) as well as the underlying diagnostic data used during the analysis. For example, the functional safety report may include data characterizing performance of the vehicle networking system 100 during the testing mode. The functional safety report may further include data indicating discrepancies between the determined performance and an expected performance of the vehicle networking system 100. In instances in which a tested network feature is determined to be faulty, the report generation module 310 may transmit or cause presentation of a warning notification indicating that the network feature is not performing as expected.
Modules, Components and Logic
Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute either software modules (e.g., code embodied on a machine-readable medium or in a transmission signal) or hardware modules. A hardware module is a tangible unit capable of performing certain operations and may be configured or arranged in a certain manner. In example embodiments, one or more computer systems (e.g., a standalone, client, or server computer system) or one or more hardware modules of a computer system (e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.
In various embodiments, a hardware module may be implemented mechanically or electronically. For example, a hardware module may comprise dedicated circuitry or logic that is permanently configured (e.g., as a special-purpose processor, such as a field-programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) to perform certain operations. A hardware module may also comprise programmable logic or circuitry (e.g., as encompassed within a general-purpose processor or other programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
Accordingly, the term “hardware module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g., programmed) to operate in a certain manner and/or to perform certain operations described herein. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where the hardware modules comprise a general-purpose processor configured using software, the general-purpose processor may be configured as respective different hardware modules at different times. Software may accordingly configure a processor, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.
Hardware modules can provide information to, and receive information from, other hardware modules. Accordingly, the described hardware modules may be regarded as being communicatively coupled. Where multiple of such hardware modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses that connect the hardware modules). In embodiments in which multiple hardware modules are configured or instantiated at different times, communications between such hardware modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware modules have access. For example, one hardware module may perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further hardware module may then, at a later time, access the memory device to retrieve and process the stored output. Hardware modules may also initiate communications with input or output devices, and can operate on a resource (e.g., a collection of information).
The various operations of example methods described herein may be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions. The modules referred to herein may, in some example embodiments, comprise processor-implemented modules.
Similarly, the methods described herein may be at least partially processor-implemented. For example, at least some of the operations of a method may be performed by one or more processors or processor-implemented modules. The performance of certain of the operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processor or processors may be located in a single location (e.g., within a home environment, an office environment, or a server farm), while in other embodiments the processors may be distributed across a number of locations.
The one or more processors may also operate to support performance of the relevant operations in a “cloud computing” environment or as a “software as a service” (SaaS). For example, at least some of the operations may be performed by a group of computers (as examples of machines including processors), with these operations being accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., APIs).
Electronic Apparatus and System
Example embodiments may be implemented in digital electronic circuitry, or in computer hardware, firmware, or software, or in combinations of them. Example embodiments may be implemented using a computer program product, for example, a computer program tangibly embodied in an information carrier, for example, in a machine-readable medium for execution by, or to control the operation of, data processing apparatus, for example, a programmable processor, a computer, or multiple computers.
A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a standalone program or as a module, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.
In example embodiments, operations may be performed by one or more programmable processors executing a computer program to perform functions by operating on input data and generating output. Method operations can also be performed by, and apparatus of example embodiments may be implemented as, special purpose logic circuitry (e.g., an FPGA or an ASIC).
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In embodiments deploying a programmable computing system, it will be appreciated that both hardware and software architectures merit consideration. Specifically, it will be appreciated that the choice of whether to implement certain functionality in permanently configured hardware (e.g., an ASIC), in temporarily configured hardware (e.g., a combination of software and a programmable processor), or in a combination of permanently and temporarily configured hardware may be a design choice. Below are set out hardware (e.g., machine) and software architectures that may be deployed, in various example embodiments.
Machine Architecture
FIG. 6 is a diagrammatic representation of a machine in the example form of a computer system 600 within which a set of instructions for causing the machine to perform any one or more of the methodologies discussed herein may be executed. The computer system 600 may include instructions for causing the machine to perform any one or more of the methodologies discussed herein. In alternative embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of a server or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.
The machine may, for example, be a personal computer (PC), a PDA, a cellular telephone, a smart phone (e.g., iPhone®), a tablet computer, a web appliance, a handheld computer, a desktop computer, a laptop or netbook, a set-top box (STB) such as provided by cable or satellite content providers, a wearable computing device such as glasses or a wristwatch, a multimedia device embedded in an automobile, a Global Positioning System (GPS) device, a data enabled book reader, a video game system console, a network router, switch or bridge, or any machine capable of executing instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
The example computer system 600 includes a processor 602 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), or both), a main memory 604, and a static memory 606, which communicate with each other via a bus 608. The computer system 600 may further include a video display 610 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The computer system 600 also includes one or more input/output (I/O) devices 612, a location component 614, a drive unit 616, a signal generation device 618 (e.g., a speaker), and a network interface device 620. The I/O devices 612 may, for example, include a keyboard, a mouse, a keypad, a multi-touch surface (e.g., a touchscreen or track pad), a microphone, a camera, and the like.
The location component 614 may be used for determining a location of the computer system 600. In some embodiments, the location component 614 may correspond to a GPS transceiver that may make use of the network interface device 620 to communicate GPS signals with a GPS satellite. The location component 614 may also be configured to determine a location of the computer system 600 by using an internet protocol (IP) address lookup or by triangulating a position based on nearby mobile communications towers. The location component 614 may be further configured to store a user-defined location in main memory 604 or static memory 606. In some embodiments, a mobile location enabled application may work in conjunction with the location component 614 and the network interface device 620 to transmit the location of the computer system 600 to an application server or third-party server for the purpose of identifying the location of a user operating the computer system 600.
In some embodiments, the network interface device 620 may correspond to a transceiver and antenna. The transceiver may be configured to both transmit and receive cellular network signals, wireless data signals, or other types of signals via the antenna, depending on the nature of the computer system 600.
Machine-Readable Medium
The drive unit 616 includes a machine-readable medium 622 on which is stored one or more sets of data structures and instructions 624 (e.g., software) embodying or used by any one or more of the methodologies or functions described herein. The instructions 624 may also reside, completely or at least partially, within the main memory 604, the static memory 606, and/or the processor 602 during execution thereof by the computer system 600, with the main memory 604, the static memory 606, and the processor 602 also constituting machine-readable media.
Consistent with some embodiments, the instructions 624 may relate to the operations of an operating system (OS). Depending on the particular type of the computer system 600, the OS may, for example, be the iOS® operating system, the Android® operating system, a BlackBerry® operating system, the Microsoft® Windows® Phone operating system, Symbian® OS, or webOS®. Further, the instructions 624 may relate to operations performed by applications (commonly known as “apps”), consistent with some embodiments. One example of such an application is a mobile browser application that displays content, such as a web page or a user interface using a browser.
While the machine-readable medium 622 is shown in an example embodiment to be a single medium, the term “machine-readable medium” may include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more data structures or instructions 624. The term “machine-readable medium” shall also be taken to include any tangible medium that is capable of storing, encoding, or carrying instructions (e.g., instructions 624) for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure, or that is capable of storing, encoding or carrying data structures used by or associated with such instructions. The term “machine-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media. Specific examples of machine-readable media include non-volatile memory, including by way of example semiconductor memory devices (e.g., erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM)) and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.
Furthermore, the tangible machine-readable medium is non-transitory in that it does not embody a propagating signal. However, labeling the tangible machine-readable medium “non-transitory” should not be construed to mean that the medium is incapable of movement—the medium should be considered as being transportable from one real-world location to another. Additionally, since the machine-readable medium is tangible, the medium may be considered to be a machine-readable device.
Transmission Medium
The instructions 624 may further be transmitted or received over a network 626 using a transmission medium. The instructions 624 may be transmitted using the network interface device 620 and any one of a number of well-known transfer protocols (e.g., HTTP). Examples of communication networks include a LAN, a WAN, the Internet, mobile telephone networks, plain old telephone service (POTS) networks, and wireless data networks (e.g., WiFi and WiMax networks). The term “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding, or carrying the instructions 624 for execution by the machine, and includes digital or analog communications signals or other intangible media to facilitate communication of such software.
Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present subject matter. Thus, the appearances of the phrase “in one embodiment” or “in an embodiment” appearing in various places throughout the specification are not necessarily all referring to the same embodiment.
For purposes of explanation, specific configurations and details are set forth in order to provide a thorough understanding of the present subject matter. However, it will be apparent to one of ordinary skill in the art that embodiments of the subject matter described may be practiced without the specific details presented herein, or in various combinations, as described herein. Furthermore, well-known features may be omitted or simplified in order not to obscure the described embodiments. Various examples may be given throughout this description. These are merely descriptions of specific embodiments. The scope or meaning of the claims is not limited to the examples given.
Although the embodiments of the present disclosure have been described with reference to specific example embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader scope of the inventive subject matter. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense. The accompanying drawings that form a part hereof show by way of illustration, and not of limitation, specific embodiments in which the subject matter may be practiced. The embodiments illustrated are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed herein. Other embodiments may be used and derived therefrom, such that structural and logical substitutions and changes may be made without departing from the scope of this disclosure. This Detailed Description, therefore, is not to be taken in a limiting sense, and the scope of various embodiments is defined only by the appended claims, along with the full range of equivalents to which such claims are entitled.
Such embodiments of the inventive subject matter may be referred to herein, individually and/or collectively, by the term “invention” merely for convenience and without intending to voluntarily limit the scope of this application to any single invention or inventive concept if more than one is in fact disclosed. Thus, although specific embodiments have been illustrated and described herein, it should be appreciated that any arrangement calculated to achieve the same purpose may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all adaptations or variations of various embodiments. Combinations of the above embodiments, and other embodiments not specifically described herein, will be apparent to those of skill in the art upon reviewing the above description.
All publications, patents, and patent documents referred to in this document are incorporated by reference herein in their entirety, as though individually incorporated by reference. In the event of inconsistent usages between this document and those documents so incorporated by reference, the usage in the incorporated references should be considered supplementary to that of this document; for irreconcilable inconsistencies, the usage in this document controls. In this document, the terms “a” or “an” are used, as is common in patent documents, to include one or more than one, independent of any other instances or usages of “at least one” or “one or more.” In this document, the term “or” is used to refer to a nonexclusive or, such that “A or B” includes “A but not B,” “B but not A,” and “A and B,” unless otherwise indicated. In the appended claims, the terms “including” and “in which” are used as the plain-English equivalents of the respective terms “comprising” and “wherein.” Also, in the following claims, the terms “including” and “comprising” are open-ended; that is, a system, device, article, or process that includes elements in addition to those listed after such a term in a claim are still deemed to fall within the scope of that claim.

## Claims

1. A method comprising:
generating, by a logging mechanism located of a first network node of a vehicle networking system, diagnostic data by logging information from data packets as the data packets travel through the vehicle networking system during a testing mode, each of the data packets comprising payload data, the logging mechanism being configured to append the diagnostic data to one or more data packets as the one or more data packets travel through the vehicle networking system, the diagnostic data including data identifying the data packets logged by the logging mechanism and timestamps indicating times at which the data packets were logged by the logging mechanism;
transmitting, to a first packet injector and a second packet injector of a second network node in the vehicle networking system, a command to execute the testing mode, the command including data identifying an execution time at which the first packet injector and the second packet injector are to begin executing the testing mode, the first packet injector and the second packet injector determining a current time based on internal clocks that are synchronized using a timing protocol, the command causing the first packet injector and the second packet injector to execute the testing mode, during the testing mode the first packet injector and the second packet injector transmit synchronized sequences of data packets within the vehicle networking system;
receiving, by a second network node of the vehicle networking system, the one or more data packets, the second network node being either a destination of the one or more data packets or the second network node that dropped the one or more data packets;
prior to payload data of the one or more data packets being passed to a next layer of the second network node, the second network node:
extracting, from the one or more data packets, the diagnostic data that was appended to the one or more data packets by the logging mechanism; and
checking the diagnostic data extracted from the one or more data packets;
analyzing the diagnostic data by the second node, the diagnostic data describing data packet transmissions in the vehicle networking system during the testing mode, the data packet transmissions including a predetermined data packet sequence for testing a first network feature of the vehicle networking system, the predetermined data packet sequence being generated based on a programmable list of packets, each entry of the programmable list comprising information describing a test packet to be transmitted in the predetermined data packet sequence;
determining, by the second network node and based on the diagnostic data, that the first network feature of the vehicle networking system is not performing as expected; and
generating, by the second network node, a functional safety report indicating that the first network feature of the vehicle networking system is not performing as expected, the functional safety report including at least a portion of the diagnostic data.

2. The method of claim 1, further comprising:
reconfiguring at least the first network node of the vehicle networking system that provides the first network feature based on the diagnostic data.

3. The method of claim 2, further comprising:
after reconfiguring the first network node, analyzing subsequent diagnostic data describing subsequent data packet transmissions in the vehicle networking system during a subsequent testing mode, the subsequent data packet transmissions including the predetermined data packet sequence for testing the first network feature of the vehicle networking system; and
determining, based on the subsequent diagnostic data, whether the first network feature of the vehicle networking system is performing as expected.

4. The method of claim 1, wherein determining that the first network feature of the vehicle networking system is not performing as expected comprises:
determining, based on the diagnostic data, a monitored performance of the vehicle networking system during the testing mode;
comparing the monitored performance of the vehicle networking system during the testing mode to an expected performance of the vehicle networking system during the testing mode, yielding a comparison;
determining, based on the comparison, a variance between the monitored performance and the expected performance; and
determining that the first network feature of the vehicle networking system is not performing as expected comprises based on the variance between the monitored performance and the expected performance.

5. The method of claim 1, further comprising:
transmitting, to the first packet injector, data describing a first sequence of data packets to be transmitted by the first packet injector during the testing mode; and
transmitting, to the second packet injector, data describing a second sequence of data packets to be transmitted by the second packet injector during the testing mode, wherein the first sequence of data packets is different than the second sequence of data packets.

6. The method of claim 1, further comprising:
causing a preset mechanism in the vehicle networking system to configure the vehicle networking system to a predetermined configuration state, wherein configuration of the vehicle networking system to the predetermined configuration state is synchronized with transmission of the synchronized sequences of data packets by the first packet injector and the second packet injector.

7. The method of claim 1, wherein generating the functional safety report indicating that the first network feature of the vehicle networking system is not performing as expected comprises:
causing presentation of an alert on a display of a vehicle, the alert indicating that the first network feature of the vehicle networking system is not performing as expected.

8. The method of claim 1, further comprising initiating a safe mode in the vehicle networking system.

9. A system comprising:
a first network node of a vehicle networking system, the first network node comprising a logging mechanism configured to generate diagnostic data by logging information from data packets as the data packets travel through the vehicle networking system during a testing mode, each of the data packets comprising payload data, the logging mechanism being configured to append the diagnostic data to one or more data packets as the one or more data packets travel through the vehicle networking system; and
a second network node of the vehicle networking system, the second network node being configured to perform operations comprising:
transmitting, to a first packet injector and a second packet injector in the vehicle networking system, a command to execute the testing mode, the command including data identifying an execution time at which the first packet injector and the second packet injector are to begin executing the testing mode, the first packet injector and the second packet injector determining a current time based on internal clocks that are synchronized using a timing protocol, the command causing the first packet injector and the second packet injector to execute the testing mode, during the testing mode the first packet injector and the second packet injector transmit synchronized sequences of data packets within the vehicle networking system, the diagnostic data including data identifying the data packets logged by the logging mechanism and timestamps indicating times at which the data packets were logged by the logging mechanism;
receiving the one or more data packets, the second network node being either a destination of the one or more data packets or the second network node that dropped the one or more data packets;
prior to payload data of the one or more data packets being passed to a next layer of the second network node, the second network node:
extracting, from the one or more data packets, the diagnostic data that was appended to the one or more data packets by the logging mechanism; and
checking the diagnostic data extracted from the one or more data packets;
analyzing the diagnostic data, the diagnostic data describing data packet transmissions in the vehicle networking system during the testing mode, the data packet transmissions including a predetermined data packet sequence for testing a first network feature of the vehicle networking system, the predetermined data packet sequence being generated based on a programmable list of packets, each entry of the programmable list comprising information describing a test packet to be transmitted in the predetermined data packet sequence;
determining, based on the diagnostic data, that the first network feature of the vehicle networking system is not performing as expected; and
generating a functional safety report indicating that the first network feature of the vehicle networking system is not performing as expected, the functional safety report including at least a portion of the diagnostic data.

10. The system of claim 9, the operations further comprising:
reconfiguring at least a first network node of the vehicle networking system that provides the first network feature based on the diagnostic data.

11. The system of claim 10, the operations further comprising:
after reconfiguring the first network node, analyzing subsequent diagnostic data describing subsequent data packet transmissions in the vehicle networking system during a subsequent testing mode, the subsequent data packet transmissions including the predetermined data packet sequence for testing the first network feature of the vehicle networking system; and
determining, based on the subsequent diagnostic data, whether the first network feature of the vehicle networking system is performing as expected.

12. The system of claim 9, wherein determining that the first network feature of the vehicle networking system is not performing as expected comprises:
determining, based on the diagnostic data, a monitored performance of the vehicle networking system during the testing mode;
comparing the monitored performance of the vehicle networking system during the testing mode to an expected performance of the vehicle networking system during the testing mode, yielding a comparison;
determining, based on the comparison, a variance between the monitored performance and the expected performance; and
determining that the first network feature of the vehicle networking system is not performing as expected comprises based on the variance between the monitored performance and the expected performance.

13. The system of claim 9, the operations further comprising:
transmitting, to the first packet injector, data describing a first sequence of data packets to be transmitted by the first packet injector during the testing mode, wherein the data describing the first sequence of data packets is included in a payload of an Operation Administration and Maintenance (OAM) message; and
transmitting, to the second packet injector, data describing a second sequence of data packets to be transmitted by the second packet injector during the testing mode, wherein the first sequence of data packets is different than the second sequence of data packets.

14. The system of claim 9, the operations further comprising:
synchronizing, using a timing a protocol, a first internal clock available to the first packet injector and a second internal clock available to the second packet injector.

15. The system of claim 9, the operations further comprising:
causing a preset mechanism in the vehicle networking system to configure the vehicle networking system to a predetermined configuration state, wherein configuration of the vehicle networking system to the predetermined configuration state is synchronized with transmission of the synchronized sequences of data packets by the first packet injector and the second packet injector.