FIFO-based network interface supporting out-of-order processing
DCFirst Claim
1. A computer system, comprising:
- a host processor;
a network interface having a first port coupled to the host processor, and second port adapted for at least one of receiving data from and transmitting data to a network;
a buffer coupled to the first and second ports which stores data packets from one of the first and second ports in an order of receipt, said packets identifiable as having respective packet types from a plurality of packet types; and
logic to transfer packets out of the buffer to the other of the first and second ports according to the order of receipt, and according to the respective packet types so that packets having a particular packet type are transferred out of the order of receipt, relative to packets having another packet type.
6 Assignments
Litigations
0 Petitions
Accused Products
Abstract
Support for priority and IP security packets, and other protocols at the network interface level and in conjunction with FIFO-based packet buffers is provided by allowing out of order processing of certain packets in the FIFO. The optimized character of FIFO for sequential transfer is maintained, while particular types of packets are processed out of order to achieve minimum latency and maximum data security in an intelligent network interface card. A buffer stores data packets in an order of receipt. Logic is included in the network interface to transfer packets out of the buffer according to the order of receipt, and according to the respective packet types so that packets having a particular packet type are transferred out of the order of receipt relative to packets having other packet types.
108 Citations
36 Claims
-
1. A computer system, comprising:
-
a host processor;
a network interface having a first port coupled to the host processor, and second port adapted for at least one of receiving data from and transmitting data to a network;
a buffer coupled to the first and second ports which stores data packets from one of the first and second ports in an order of receipt, said packets identifiable as having respective packet types from a plurality of packet types; and
logic to transfer packets out of the buffer to the other of the first and second ports according to the order of receipt, and according to the respective packet types so that packets having a particular packet type are transferred out of the order of receipt, relative to packets having another packet type. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A computer system, comprising:
-
a host processor;
a network interface having a first port coupled to the host processor, and second port adapted for at least one of receiving data from and transmitting data to a network;
a buffer coupled to the first and second ports which stores data packets from one of the first and second ports in an order of receipt, said packets identifiable as having respective packet types from a plurality of packet types;
logic to transfer packets out of the buffer to the other of the first and second ports according to the order of receipt, and according to the respective packet types so that packets having a particular packet type are transferred out of the order of receipt, relative to packets having another packet type; and
a data filter coupled with the buffer to generate identifiers which identify packets of data stored in the buffer as members of one of a plurality of packet types.
-
-
8. A computer system, comprising:
-
a host processor;
a network interface having a first port coupled to the host processor, and second port adapted for at least one of receiving data from and transmitting data to a network;
a buffer coupled to the first and second ports which stores data packets from one of the first and second ports in an order of receipt, said packets identifiable as having respective packet types from a plurality of packet types;
logic to transfer packets out of the buffer to the other of the first and second ports according to the order of receipt, and according to the respective packet types so that packets having a particular packet type are transferred out of the order of receipt, relative to packets having another packet type;
a data filter coupled with the buffer to generate identifiers which identify packets of data as members of one of a plurality of packet types when the packets are stored in the buffer; and
logic to write the identifiers in the buffer.
-
-
9. A computer system, comprising:
-
a host processor;
a network interface having a first port coupled to the host processor, and second port adapted for at least one of receiving data from and transmitting data to a network;
a buffer coupled to the first and second ports which stores data packets from one of the first and second ports in an order of receipt, said packets identifiable as having respective packet types from a plurality of packet types; and
logic to transfer packets out of the buffer to the other of the first and second ports according to the order of receipt, and according to the respective packet types so that packets having a particular packet type are transferred out of the order of receipt, relative to packets having another packet type;
wherein the particular type of packet comprises a payload suitable for processing according to a particular process prior to transfer, and the network interface includes logic, responsive to the particular packet type, to process the payload according to the particular process and generate control data associated with the particular packet indicating a state of the processing, and the logic to transfer the packet is responsive to the control data so that the particular packet may be transferred out of the order of receipt relative to other packets having other packet types and other packets having the particular packet type based on the control data.
-
-
10. A computer system, comprising:
-
a host processor;
a network interface having a first port coupled to the host processor, and second port adapted for at least one of receiving data from and transmitting data to a network;
a buffer coupled to the first and second ports which stores data packets from one of the first and second ports in an order of receipt, said packets identifiable as having respective packet types from a plurality of packet types; and
logic to transfer packets out of the buffer to the other of the first and second ports according to the order of receipt, and according to the respective packet types so that packets having a particular packet type are transferred out of the order of receipt, relative to packets having another packet type;
wherein the particular process comprises a security protocol compliant with IPsec.
-
-
11. A computer system, comprising:
-
a host processor;
a network interface having a first port coupled to the host processor, and second port adapted for at least one of receiving data from and transmitting data to a network;
a buffer coupled to the first and second ports which stores data packets from one of the first and second ports in an order of receipt, said packets identifiable as having respective packet types from a plurality of packet types; and
logic to transfer packets out of the buffer to the other of the first and second ports according to the order of receipt, and according to the respective packet types so that packets having a particular packet type are transferred out of the order of receipt, relative to packets having another packet type;
wherein the logic to transfer the packets includes processing resources which set up a control field for each packet stored in the buffer;
write parameters in the control field indicating the packet type, and whether the packet has already been transferred;
maintain a queue of entries identifying packets having the particular packet type;
maintain an indicator of fullness of the buffer; and
transfer a packet from the buffer according to a priority rule which causes transfer of a packet identified by an entry in the queue out of the order of receipt, and causes transfer of a packet not identified by an entry in the queue in the order of receipt of the packet, if the parameters in the control field indicate the packet has not already been transferred, and the queue of entries is empty or the indicator of fullness exceeds a threshold.
-
-
12. A computer system, comprising:
-
a host processor;
a network interface having a first port coupled to the host processor, and second port adapted for at least one of receiving data from and transmitting data to a network;
a buffer coupled to the first and second ports which stores data packets from one of the first and second ports in an order of receipt, said packets identifiable as having respective packet types from a plurality of packet types; and
logic to transfer packets out of the buffer to the other of the first and second ports according to the order of receipt, and according to the respective packet types so that packets having a particular packet type are transferred out of the order of receipt, relative to packets having another packet type;
wherein the logic to transfer the packets includes processing resources which set up a control field for each packet stored in the buffer;
write a parameter in the control field indicating the packet type;
process packets having the particular packet type according to a particular process;
write a parameter in the control field indicating whether the processing according to the particular process is complete; and
transfer a packet from the buffer according to a priority rule which skips transfer of a packet having the particular packet type if the parameter in the control field indicates the processing is not complete, and causes transfer of a packet in the order of receipt, if parameters in the control field indicates the packet is ready for transfer.
-
-
13. A computer system, comprising:
-
a host processor;
a network interface having a first port coupled to the host processor, and second port adapted for at least one of receiving data from and transmitting data to a network;
a buffer coupled to the first and second ports which stores data packets from one of the first and second ports in an order of receipt, said packets identifiable as having respective packet types from a plurality of packet types; and
logic to transfer packets out of the buffer to the other of the first and second ports according to the order of receipt, and according to the respective packet types so that packets having a particular packet type are transferred out of the order of receipt, relative to packets having another packet type;
wherein the plurality of packet types includes first and second packet types in addition to the particular packet type, and the logic to transfer the packets includes processing resources which set up a control field for each packet stored in the buffer;
write parameters in the control field indicating the packet type, and whether the packet has already been transferred;
maintain a queue of entries identifying packets having the particular packet type;
process packets having the second packet type according to a particular process;
write a parameter in the control field for packets having the second packet type indicating whether the processing according to the particular process is complete;
maintain an indicator of fullness of the buffer; and
transfer a packet from the buffer according to a priority rule which causes transfer of a packet identified by an entry in the queue ahead of packets in the buffer having the first and second packet types relative to the order of receipt, causes transfer of a packet having the first packet type in the order of receipt, if the parameters in the control field indicate the packet is ready for transfer, and the queue of entries is empty or the indicator of fullness exceeds a threshold, and causes transfer of a packet having the second packet type after packets having the first packet type relative to the order of receipt if the parameter in the control field indicates the processing is not complete. - View Dependent Claims (14)
-
-
15. A method for managing transfer of data packets between a host processor and a network, comprising:
-
storing packets in a first-in-first-out buffer in an order of receipt;
identifying packets as having respective packet types from a plurality of packet types; and
transferring packets out of the first-in-a first-out buffer according to the order of receipt, and according to the packet type so that packets having a particular packet type are transferred out of the order of receipt relative to packets having another packet type. - View Dependent Claims (16, 17)
-
-
18. A method for managing transfer of data packets between a host processor and a network, comprising:
-
storing packets in a first-in-first-out buffer in an order of receipt;
identifying packets as having respective packet types from a plurality of packet types;
transferring packets out of the first-in-a first-out buffer according to the order of receipt, and according to the packet type so that packets having a particular packet type are transferred out of the order of receipt relative to packets having another packet type;
setting up a control field for each packet stored in the buffer;
writing a parameter in the control field indicating the packet type;
processing packets having the particular packet type according to a particular process;
writing a parameter in the control field indicating whether the processing according to the particular process is complete; and
transferring a packet from the buffer according to a priority rule which skips transferring of a packet having the particular type if the parameter in the control field indicates the process is not complete.
-
-
19. A method for managing transfer of data packets between a host processor and a network, comprising:
-
storing packets in a first-in-first-out buffer in an order of receipt;
identifying packets as having respective packet types from a plurality of packet types; and
transferring packets out of the first-in-a first-out buffer according to the order of receipt, and according to the packet type so that packets having a particular packet type are transferred out of the order of receipt relative to packets having another packet type;
wherein the plurality of packet types includes first and second packet types in addition to the particular packet type, and including; setting up a control field for each packet stored in the buffer indicating an order of receipt;
writing parameters in the control field indicating the packet type, and whether the packet has already been transferred;
maintaining a queue of entries identifying packets having the particular packet type;
processing packets having the second packet type according to a particular process;
writing a parameter in the control field for packets having the second packet type indicating whether the processing according to the particular process is complete;
maintaining an indicator of fullness of the buffer; and
transferring a packet from the buffer according to a priority rule which causes transferring of a packet identified by an entry in the queue ahead of packets in the buffer having the first and second packet types relative to the order of receipt, causes transferring of a packet having the first packet type in the order of receipt the packet, if the parameters in the control field indicate the packet has not already been transferred, and the queue of entries is empty or the indicator of fullness exceeds a threshold, and skips transferring of a packet having the second packet type if the parameter in the control field indicates the processing is not complete. - View Dependent Claims (20)
-
-
21. A method for managing transfer of data packets between a host processor and a network, comprising:
-
storing packets in a first-in-first-out buffer in an order of receipt;
identifying packets as having respective packets types from a plurality of packets types;
transferring packets out of the first-in-first-out buffer according to the order of receipt, and according to the packet type so that packets having a particular packet type are transferred out of the order of receipt relative to packets having another packet type; and
storing control parameters associated with packets in the first-in-first-out buffer, the control parameters indicating the packet type, whether the packet is ready for transfer, and whether the packet has already been transferred.
-
-
22. A method for managing transfer of data packets between a host processor and a network, comprising:
-
storing packets in a first-in-first-out buffer in an order of receipt;
identifying packets as having respective packet types from a plurality of packet types;
transferring packets out of the first-in-a first-out buffer according to the order of receipt, and according to the packet type so that packets having a particular packet type are transferred out of the order of receipt relative to packets having another packet type;
setting up a control field for each packet stored in the buffer;
writing parameters in the control field indicating the packet type, and whether the packet has already been transferred;
maintaining a queue of entries identifying packets having the particular packet type;
maintaining an indicator of fullness of the buffer; and
transferring a packet from the buffer according to a priority rule which causes transferring of a packet identified by an entry in the queue out of the order of receipt, and causes transferring of a packet not identified by an entry in the queue in the order of receipt the packet, if the parameters in the control field indicate the packet is ready for transfer and has not already been transferred, and the queue of entries is empty or the indicator of fullness exceeds a threshold.
-
-
23. An integrated circuit for use in a network interface for a host computer, comprising:
-
a first port adapted for at least one of receiving data from and transmitting data to the host processor, and second port adapted for at least one of receiving data from and transmitting data to a network;
a buffer coupled to the first and second ports which stores data packets from one of the first and second ports in an order of receipt, said packets identifiable as having respective packet types from a plurality of packet types; and
logic to transfer packets out of the buffer to the other of the first and second ports according to the order of receipt, and according to the respective packet types so that packets having a particular packet type are transferred out of the order of receipt, relative to packets having another packet type. - View Dependent Claims (24, 25, 26, 27, 28)
-
-
29. An integrated circuit for use in a network interface for a host computer, comprising:
-
a first port adapted for at least one of receiving data from and transmitting data to the host processor, and second port adapted for at least one of receiving data from and transmitting data to a network;
a buffer coupled to the first and second ports which stores data packets from one of the first and second ports in an order of receipt, said packets identifiable as having respective packet types from a plurality of packet types;
logic to transfer packets out of the buffer to the other of the first and second ports according to the order of receipt, and according to the respective packet types so that packets having a particular packet type are transferred out of the order of receipt, relative to packets having another packet type;
a data filter coupled with the buffer to generate identifiers which identify packets of data as members of one of a plurality of packet types when the packets are stored in the buffer; and
logic to write the identifiers in the buffer.
-
-
30. An integrated circuit for use in a network interface for a host computer, comprising:
-
a first port adapted for at least one of receiving data from and transmitting data to the host processor, and second port adapted for at least one of receiving data from and transmitting data to a network;
a buffer coupled to the first and second ports which stores data packets from one of the first and second ports in an order of receipt, said packets identifiable as having respective packet types from a plurality of packet types;
logic to transfer packets out of the buffer to the other of the first and second ports according to the order of receipt, and according to the respective packet types so that packets having a particular packet type are transferred out of the order of receipt, relative to packets having another packet type; and
a data filter coupled with the buffer to generate identifiers which identify packets of data stored in the buffer as members of one of a plurality of packet types.
-
-
31. An integrated circuit for use in a network interface for a host computer, comprising:
-
a first port adapted for at least one of receiving data from and transmitting data to the host processor, and second port adapted for at least one of receiving data from and transmitting data to a network;
a buffer coupled to the first and second ports which stores data packets from one of the first and second ports in an order of receipt, said packets identifiable as having respective packet types from a plurality of packet types; and
logic to transfer packets out of the buffer to the other of the first and second ports according to the order of receipt, and according to the respective packet types so that packets having a particular packet type are transferred out of the order of receipt, relative to packets having another packet type;
wherein the particular type of packet comprises a payload suitable for processing according to a particular process prior to transfer, and the integrated circuit includes logic, responsive to the particular packet type, to process the payload according to the particular process and generate control data associated with the particular packet indicating a state of the processing, and the logic to transfer the packet is responsive to the control data so that the particular packet may be transferred out of the order of receipt relative to other packets having other packet types and other packets having the particular packet type based on the control data. - View Dependent Claims (32)
-
-
33. An integrated circuit for use in a network interface for a host computer, comprising:
-
a first port adapted for at least one of receiving data from and transmitting data to the host processor, and second port adapted for at least one of receiving data from and transmitting data to a network;
a buffer coupled to the first and second ports which stores data packets from one of the first and second ports in an order of receipt, said packets identifiable as having respective packet types from a plurality of packet types; and
logic to transfer packets out of the buffer to the other of the first and second ports according to the order of receipt, and according to the respective packet types so that packets having a particular packet type are transferred out of the order of receipt, relative to packets having another packet type;
wherein the logic to transfer the packets includes processing resources which set up a control field for each packet stored in the buffer;
write parameters in the control field indicating the packet type, and whether the packet has already been transferred;
maintain a queue of entries identifying packets having the particular packet type;
maintain an indicator of fullness of the buffer; and
transfer a packet from the buffer according to a priority rule which causes transfer of a packet identified by an entry in the queue out of the order of receipt, and causes transfer of a packet not identified by an entry in the queue in the order of receipt the packet, if the parameters in the control field indicate the packet has not already been transferred, and the queue of entries is empty or the indicator of fullness exceeds a threshold.
-
-
34. An integrated circuit for use in a network interface for a host computer, comprising:
-
a first port adapted for at least one of receiving data from and transmitting data to the host processor, and second port adapted for at least one of receiving data from and transmitting data to a network;
a buffer coupled to the first and second ports which stores data packets from one of the first and second ports in an order of receipt, said packets identifiable as having respective packet types from a plurality of packet types; and
logic to transfer packets out of the buffer to the other of the first and second ports according to the order of receipt, and according to the respective packet types so that packets having a particular packet type are transferred out of the order of receipt, relative to packets having another packet type;
wherein the logic to transfer the packets includes processing resources which set up a control field for each packet stored in the buffer;
write a parameter in the control field indicating the packet type;
process packets having the particular packet type according to a particular process;
write a parameter in the control field indicating whether the processing according to the particular process is complete; and
transfer a packet from the buffer according to a priority rule which skips transfer of a packet having the particular packet type if the parameter in the control field indicates the processing is not complete, and causes transfer of a packet in the order of receipt, if parameters in the control field indicates the packet is ready for transfer.
-
-
35. An integrated circuit for use in a network interface for a host computer, comprising:
-
a first port adapted for at least one of receiving data from and transmitting data to the host processor, and second port adapted for at least one of receiving data from and transmitting data to a network;
a buffer coupled to the first and second ports which stores data packets from one of the first and second ports in an order of receipt, said packets identifiable as having respective packet types from a plurality of packet types; and
logic to transfer packets out of the buffer to the other of the first and second ports according to the order of receipt, and according to the respective packet types so that packets having a particular packet type are transferred out of the order of receipt, relative to packets having another packet type;
wherein the plurality of packet types includes first and second packet types in addition to the particular packet type, and the logic to transfer the packets includes processing resources which set up a control field for each packet stored in the buffer;
write parameters in the control field indicating the packet type, and whether the packet has already been transferred;
maintain a queue of entries identifying packets having the particular packet type;
process packets having the second packet type according to a particular process;
write a parameter in the control field for packets having the second packet type indicating whether the processing according to the particular process is complete;
maintain an indicator of fullness of the buffer; and
transfer a packet from the buffer according to a priority rule which causes transfer of a packet identified by an entry in the queue ahead of packets in the buffer having the first and second packet types relative to the order of receipt, causes transfer of a packet having the first packet type in the order of receipt, if the parameters in the control field indicate the packet is ready for transfer, and the queue of entries is empty or the indicator of fullness exceeds a threshold, and causes transfer of a packet having the second packet type after packets having the first packet type relative to the order of receipt if the parameter in the control field indicate the processing is complete. - View Dependent Claims (36)
-
Specification