BACKGROUND

Rapid processing of data messages (which appear on networks in the form of packets or frames) is desirable in numerous technical fields, from routing to security to transaction processing. With network speeds increasing to gigabits per second and beyond, the amount of time available for low-latency message processing has shrunk to a few hundreds—or even a few tens—of nanoseconds. If more time than this is required per message, transmission of these messages would be delayed until the processing is complete. This eliminates most, if not all, software-based processing solutions from being viable candidates for low-latency processing.

SUMMARY

The embodiments herein involve customized hardware-based message processing solutions. In particular, particular locations or fields within incoming and outgoing messages are parsed and validated in parallel to the messages being processed by a network protocol stack. This results in the messages either being validated or rejected by the time that the network protocol stack processing is complete. As a result, the content of the messages can be analyzed with zero latency beyond that which is introduced by the stack. Proactively discarding invalid messages can dramatically decrease the processing overhead of invalid messages that would otherwise be required at downstream software applications.

A first example embodiment may involve a network interface configured to transmit and receive frames on a network. The first example embodiment may also involve a network protocol stack configured to: (i) perform encapsulation of outgoing messages into outgoing frames for transmission by way of the network interface, and/or (ii) perform decapsulation of incoming frames received by way of the network interface into incoming messages. The first example embodiment may also involve a parsing and validation module configured to: (i) receive representations of the incoming and/or the outgoing messages, and (ii) perform one or more validation checks on the representations, wherein the representations define transactions that are functionally equivalent to corresponding transactions that are defined by the messages, wherein the one or more validation checks are performed in parallel to performance of the encapsulation and/or decapsulation, and wherein a representation of a message failing the one or more validation checks causes the message to be discarded.

A second example embodiment may involve receiving, by way of a bus, an outgoing message. The second example embodiment may also involve providing the outgoing message to a network protocol stack and providing a representation of the outgoing message to a parsing and validation module, wherein the representation defines a transaction that is functionally equivalent to a corresponding transaction that is defined by the outgoing message. The second example embodiment may also performing, by the network protocol stack, encapsulation of the outgoing message into an outgoing frame. The second example embodiment may also performing, by the parsing and validation module, one or more validation checks on the representation, wherein the one or more validation checks are performed in parallel to performance of the encapsulation, wherein the representation failing the one or more validation checks causes the outgoing frame to be discarded, and wherein the representation passing the one or more validation checks causes the outgoing frame to be transmitted by way of a network interface.

A third example embodiment may involve receiving, by way of a network interface, an incoming frame. The third example embodiment may also involve providing the incoming frame to a network protocol stack and providing a representation of the incoming frame to a parsing and validation module, wherein the representation defines a transaction that is functionally equivalent to a corresponding transaction that is defined by the incoming frame. The third example embodiment may also involve performing, by the network protocol stack, decapsulation of the incoming frame into an incoming message. The third example embodiment may also involve performing, by the parsing and validation module, one or more validation checks on the representation, wherein the one or more validation checks are performed in parallel to performance of the decapsulation, wherein the representation failing the one or more validation checks causes the incoming message to be discarded, and wherein the representation passing the one or more validation checks causes the incoming message to be transmitted by way of a bus.

Further embodiments may include procedures carried out by computing devices in accordance with the first, second, and/or third example embodiments, as well as a computer-readable medium containing program instructions that, when executed, carry out operations of the first, second, and/or third example embodiments.

These as well as other embodiments, aspects, advantages, and alternatives will become apparent to those of ordinary skill in the art by reading the following detailed description, with reference where appropriate to the accompanying drawings. Further, this summary and other descriptions and figures provided herein are intended to illustrate embodiments by way of example only and, as such, that numerous variations are possible. For instance, structural elements and process steps can be rearranged, combined, distributed, eliminated, or otherwise changed, while remaining within the scope of the embodiments as claimed.

