IP Library Granted Patent US 9,003,053
Granted Patent B2
US 9,003,053 · App. 13/624,788 · Granted Apr 7, 2015

Message acceleration

Inventors: Steven L. Pope (Costa Mesa, CA); David J. Riddoch (Huntingdon, GB)
Assignee: Solarflare Communications, Inc.
H04L69/161H04L69/12H04L69/32
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,003,053
App. No.
13/624,788
Granted
Apr 7, 2015
Kind
B2
Abstract

A data processing system comprising: a host computing device supporting an operating system and a network protocol stack, the network protocol stack being operable to support one or more transport streams by performing transport stream protocol processing of data packets received over the streams; a network interface device arranged to couple the host computing device to a network and operable to receive data packets over a transport stream supported by the network protocol stack; and a message engine configured to perform upper layer protocol processing; wherein the network interface device is configured to, on receiving a data packet over one of a predetermined set of transport streams, pass the payload data of the data packet to the message engine and the message engine is configured to, in response to receiving the payload data, identify and process any upper layer messages in the payload data in accordance with the upper layer protocol.

Claims (54)

1. A data processing system comprising:

a host computing device supporting an operating system and a network protocol stack, the network protocol stack being operable to support one or more transport streams by performing transport stream protocol processing of data packets received over the streams; and

a network interface device arranged to couple the host computing device to a network and operable to receive data packets over a transport stream supported by the network protocol stack, said network interface device comprising a message engine configured to perform upper layer protocol processing,

wherein the network interface device is configured to, on receiving a data packet over one of a predetermined set of transport streams, pass the payload data of the data packet to the message engine and the message engine is configured to, in response to receiving the payload data, identify and process any upper layer messages in the payload data in accordance with the upper layer protocol,

wherein said message engine processes said upper layer messages before the transport protocol processing have been completed, and is further configured to pass at least the headers of the data packet to the network protocol stack so as to cause the network protocol stack to perform transport protocol processing of the received data packet.

2. A data processing system as claimed in claim 1 , wherein the network protocol stack is further configured to, in response to receiving at least the headers of the data packet, perform lower layer protocol processing of the received data packet so as to complete protocol processing of network protocols below the transport layer.

3. A data processing system as claimed in claim 1 , wherein the network interface device passes the payload data to the message engine by making available at least the payload data to the message engine, and optionally the received data packet including its headers and the payload data.

4. A data processing system as claimed in claim 1 , wherein the network interface device or message engine parses the received data packet so as to identify its payload data.

5. A data processing system as claimed in claim 1 , wherein the payload data does not comprise any data relating to intervening protocol layers between the upper layer protocol and the transport stream protocol.

6. A data processing system as claimed in claim 1 , wherein the payload data only comprises data relating to the upper layer protocol.

7. A data processing system as claimed in claim 1 , wherein the message engine is configured to, if the upper layer processing is successful, pass data generated by the upper layer processing to the upper layer endpoint to which the upper layer messages are directed.

8. A data processing system as claimed in claim 7 , wherein the message engine passes data generated by the upper layer processing to the network protocol stack by writing the data generated by the upper layer processing to a buffer at the host computing device that is accessible to the network protocol stack.

9. A data processing system as claimed in claim 1 , wherein the message engine is configured to, if the upper layer processing is successful, pass data generated by the upper layer processing to the network protocol stack and the network protocol stack is configured to release the generated data to the upper layer endpoint to which the upper layer messages are directed only if the transport stream processing of the data packet is successful and the data packet is determined to have been received in-sequence.

10. A data processing system as claimed in claim 1 , wherein the network protocol stack is configured to, if the network protocol stack determines that the data packet was received out-of-sequence, discard the data generated by the message engine and cause the upper layer protocol processing of the data packet to be performed in software at the host computing device.

11. A data processing system as claimed in claim 1 , wherein the message engine is configured to, if the upper layer processing is unsuccessful, signal the network protocol stack to indicate that upper layer processing was unsuccessful, and the network protocol stack is configured to, in response to the signal, cause the upper layer protocol processing of the data packet to be performed in software at the host computing device.

12. A data processing system as claimed in claim 11 , wherein the upper layer protocol processing is performed in software at the network protocol stack or at an application supported by the operating system of the host computing device.

13. A data processing system as claimed in claim 1 , wherein the message engine is further configured to maintain a packet sequence number for each of the predetermined set of transport streams and to, if the payload data comprises a partial upper layer message, perform the following steps:

process the partial upper layer message in accordance with the upper layer protocol;

store metadata describing the processing state of the message engine; and

on the network interface device receiving a subsequent data packet over the one of the predetermined set of transport streams, check that the packet sequence number of the subsequent data packet indicates that it is the next data packet in the sequence of data packets transmitted over that transport stream, and if so:

load the metadata describing the processing state of the message engine and continue upper layer protocol processing of the respective upper layer message; and

otherwise, abandon the upper layer protocol processing of the respective upper layer message.

14. A data processing system as claimed in claim 13 , wherein the message engine is further configured to, on upper layer protocol processing of the respective upper layer message being completed, pass data generated by the upper layer processing to the endpoint to which the upper layer messages are directed.

15. A data processing system as claimed in claim 13 , wherein the message engine is further configured to, if upper layer protocol processing of the respective upper layer message is abandoned, signal to the network protocol stack so as to cause the upper layer protocol processing of the respective data packets to be performed in software at the host computing device.

16. A data processing system as claimed in claim 1 , wherein the upper layer endpoint is an application supported by the operating system of the host computing device, the message engine itself, or another hardware engine of the data processing system.

17. A data processing system as claimed in claim 16 , wherein the another hardware engine is a financial trading engine provided at a peripheral device of the host computing system and the upper layer protocol is FIX.

18. A data processing system as claimed in claim 1 , wherein the lower layer protocols include one or more of IP, IPSec, IEEE 802.3, and IEEE 802.11.

19. A data processing system as claimed in claim 1 , wherein the network interface device is not operable to perform transport stream protocol processing to completion.

20. A data processing system as claimed in claim 1 , wherein the network protocol stack is a user level network protocol stack.

21. A data processing system as claimed in claim 1 , wherein the transport stream protocol is TCP.

22. A data processing system comprising:

a host computing device supporting an operating system and a network protocol stack, the network protocol stack being operable to support one or more transport streams by performing transport stream protocol processing of data packets received over the streams; and

a network interface device arranged to couple the host computing device to a network and operable to transmit data packets over a transport stream supported by the network protocol stack, said network interface device comprising a message engine configured to perform upper layer protocol processing,

wherein the network protocol stack is configured to, on upper layer data being for transmission over one of a predetermined set of transport streams, form transport stream information sufficient for the message engine to form a data packet without performing transport stream protocol processing and cause the message engine to process the upper layer data in accordance with the upper layer protocol so as to form one or more upper layer messages; and the message engine being configured to, in dependence on the transport stream information, encapsulate the one or more upper layer messages in one or more data packets and cause the network interface device to transmit the data packet over the transport stream.

23. A data processing system as claimed in claim 22 , wherein the transport stream protocol is TCP and the transport stream information includes: segment sequence number, TCP receive window size, ACK number, source port number, destination port number, maximum segment size, and the TCP options of the TCP stream.

24. A data processing system as claimed in claim 22 , wherein the upper layer data for transmission is generated at the message engine, at an application supported at the operating system of the host computing device, or at another hardware engine of the data processing system.

25. A data processing system as claimed in claim 24 , wherein the another hardware engine is a financial trading engine provided at a peripheral device of the host computing system and the upper layer protocol is FIX.

26. A data processing system as claimed in claim 22 , wherein the transport stream information comprises information sufficient for the message engine to form the data packet without performing lower layer protocol processing.

27. A data processing system as claimed in claim 26 , wherein the transport stream information includes one or more of an Ethernet MAC address, a VLAN-id, an IP address and an IP ID.

28. A data processing system as claimed in claim 22 , wherein the transport stream information comprises a data packet template.

29. A data processing system as claimed in claim 22 , wherein the message engine is configured to request transport stream information from the network protocol stack on the message engine receiving upper layer data for transmission.

30. A data processing system as claimed in claim 22 , wherein the transport stream information includes a packet sequence number and the message engine is configured to, if the one or more upper layer messages require more than one data packet, for each additional data packet increment the packet sequence number.

31. A data processing system as claimed in claim 22 , wherein the message engine is configured to make available to the network protocol stack each data packet it causes to be transmitted.

32. A data processing system as claimed in claim 31 , wherein the network protocol stack is configured to, if a data packet is to be retransmitted over one of the predetermined set of transport streams, effect retransmission of that data packet by modifying a copy of the data packet made available to it by the message engine and causing the modified copy to be transmitted by the network interface device.

33. A data processing system as claimed in claim 22 , wherein the message engine is configured to signal to the network protocol stack the packet sequence numbers of any additional data packets it causes to be transmitted.

34. A data processing system as claimed in claim 22 , wherein the network protocol stack is further configured to signal to the message engine the amount of payload data the message engine is permitted to cause to be transmitted by the network interface device.

35. A data processing system as claimed in claim 34 , wherein the amount of payload data is expressed as a number of data packets or a length of payload data.

36. A data processing system as claimed in claim 22 , wherein the network protocol stack has access to the upper layer data for transmission and is configured to, if a data packet is to be retransmitted over one of the predetermined set of transport streams, effect retransmission of that data packet by:

passing the respective upper layer data for transmission to the message engine along with transport stream information sufficient to generate the data packet for retransmission; or

passing the respective upper layer data for transmission to a software entity of the host computing device so as to cause that entity to form the respective one or more upper layer messages and forming the data packet for retransmission at the network protocol stack.

37. A data processing system as claimed in claim 22 , wherein the lower layer protocols include one or more of IP, IPSec, IEEE 802.3, and IEEE 802.11.

38. A data processing system as claimed in claim 22 , wherein the network interface device is not operable to perform transport stream protocol processing to completion.

39. A data processing system as claimed in claim 22 , wherein the network protocol stack is a user level network protocol stack.

40. A data processing system as claimed in claim 22 , wherein the transport stream protocol is TCP.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 25, 2019
From: SOLARFLARE COMMUNICATIONS, INC.
To: XILINX, INC.
Reel/Frame 051108/0209 →
RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jul 31, 2019
From: ALLY BANK
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 049918/0440 →
RELEASE OF SECURITY INTEREST Recorded Jun 15, 2017
From: PACIFIC WESTERN BANK
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 042820/0890 →
SECURITY INTEREST Recorded Mar 7, 2017
From: SOLARFLARE COMMUNICATIONS, INC.
To: ALLY BANK
Reel/Frame 041902/0527 →
SECURITY INTEREST Recorded Apr 6, 2016
From: SOLARFLARE COMMUNICATIONS, INC.
To: PACIFIC WESTERN BANK
Reel/Frame 038363/0589 →
CHANGE OF ADDRESS OF THE ASSIGNEE Recorded Jan 8, 2013
From: SOLARFLARE COMMUNICATIONS INC.
To: SOLARFLARE COMMUNICATIONS INC.
Reel/Frame 029636/0295 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2012
From: POPE, STEVEN L.; RIDDOCH, DAVID J.
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 029151/0285 →
Continuity (2)
Provisional Application 61538055 · Sep 22, 2011
Related Publication 20130080651A1 · Mar 28, 2013