Method and apparatus for distributing network traffic processing on a multiprocessor computer
First Claim
1. A method of distributing network traffic processing among a plurality of processors in a multiprocessor computer, comprising:
- receiving a first packet at a network interface of a multiprocessor computer;
retrieving from said first packet an identifier of a source of said first packet;
retrieving from said first packet an identifier of a destination of said first packet;
combining said source identifier and said destination identifier to form a first flow index for identifying a first communication flow comprising said first packet;
generating from said first flow index an identifier of a first processor of a plurality of processors of said multiprocessor computer;
associating said first processor identifier with said first packet; and
submitting said first packet for processing by said first processor.
3 Assignments
0 Petitions
Accused Products
Abstract
An intelligent network interface card (INIC) or communication processing device (CPD) works with a host computer for data communication. The device provides a fast-path that avoids protocol processing for most messages, greatly accelerating data transfer and offloading time-intensive processing tasks from the host CPU. The host retains a fallback processing capability for messages that do not fit fast-path criteria, with the device providing assistance such as validation even for slow-path messages, and messages being selected for either fast-path or slow-path processing. A context for a connection is defined that allows the device to move data, free of headers, directly to or from a destination or source in the host. The context can be passed back to the host for message processing by the host. The device contains specialized hardware circuits that are much faster at their specific tasks than a general purpose CPU. A preferred embodiment includes a trio of pipelined processors devoted to transmit, receive and utility processing, providing full duplex communication for four Fast Ethernet nodes.
277 Citations
54 Claims
-
1. A method of distributing network traffic processing among a plurality of processors in a multiprocessor computer, comprising:
-
receiving a first packet at a network interface of a multiprocessor computer;
retrieving from said first packet an identifier of a source of said first packet;
retrieving from said first packet an identifier of a destination of said first packet;
combining said source identifier and said destination identifier to form a first flow index for identifying a first communication flow comprising said first packet;
generating from said first flow index an identifier of a first processor of a plurality of processors of said multiprocessor computer;
associating said first processor identifier with said first packet; and
submitting said first packet for processing by said first processor. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A method of distributing the load of processing packets received from a network among multiple processors in a multiprocessor computer, comprising:
-
receiving a first packet at a network interface of a multiprocessor host computer;
receiving a second packet at said network interface;
retrieving a source identifier and a destination identifier from said first packet;
combining said source identifier and said destination identifier to form a first flow key;
creating a second flow key to identify a second communication flow comprising said second packet;
generating an identifier of a first processor from said first flow key;
generating an identifier of a second processor from said second flow key;
submitting said first packet to said first processor; and
submitting said second packet to said second processor. - View Dependent Claims (15, 16, 17, 18, 19)
-
-
20. A multiprocessor computer for receiving and processing packets from a network, comprising:
-
a plurality of processors; and
a network interface configured to receive packets from a network and submit said packets to said plurality of processors, said network interface comprising;
a flow identifier configured to;
retrieve a source identifier and a destination identifier from a packet; and
combine said source identifier and said destination identifier to form a flow key for identifying a flow comprising said packet; and
a load distributor configured to generate, from said flow key, an identifier of a processor of said plurality of said processors for processing said packet;
wherein said load distributor generates a first identifier of a first processor for a first set of packets in a first flow and generates a second identifier of a second processor for a second set of packets in a second flow. - View Dependent Claims (21, 22)
-
-
23. A computer readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method of distributing the processing of network traffic among multiple processors, the method comprising:
-
receiving a first packet at a network interface of a multiprocessor computer;
retrieving from said first packet an identifier of a source of said first packet;
retrieving from said first packet an identifier of a destination of said first packet;
combining said source identifier and said destination identifier to form a first flow index for identifying a first communication flow comprising said first packet;
generating from said first flow index an identifier of a first processor of a plurality of processors of said multiprocessor computer;
associating said first processor identifier with said first packet; and
submitting said first packet for processing by said first processor. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31, 32, 33)
-
-
34. A method of distributing network traffic processing among a plurality of processors in a multiprocessor computer, comprising:
-
receiving a first packet at a network interface of a multiprocessor computer;
producing a first flow index to identify a first communication flow comprising said first packet;
generating from said first flow index an identifier of a first processor of a plurality of processors of said multiprocessor computer;
associating said first processor identifier with said first packet;
storing said first packet in a first memory of said multiprocessor computer;
storing said first processor identifier in a second memory; and
issuing an alert to said multiprocessor computer to notify said multiprocessor computer of said storage of said first packet. - View Dependent Claims (35, 36, 37, 38, 39)
-
-
40. A computer readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method of distributing network traffic processing among a plurality of processors in a multiprocessor computer, the method comprising:
-
receiving a first packet at a network interface of a multiprocessor computer;
producing a first flow index to identify a first communication flow comprising said first packet;
generating from said first flow index an identifier of a first processor of a plurality of processors of said multiprocessor computer;
associating said first processor identifier with said first packet;
storing said first packet in a first memory of said multiprocessor computer;
storing said first processor identifier in a second memory; and
issuing an alert to said multiprocessor computer to notify said multiprocessor computer of said storage of said first packet.
-
-
41. A method of distributing network traffic processing among a plurality of processors in a multiprocessor computer, comprising:
-
receiving a first packet at a network interface of a multiprocessor computer;
producing a first flow index to identify a first communication flow comprising said first packet;
generating from said first flow index an identifier of a first processor of a plurality of processors of said multiprocessor computer;
associating said first processor identifier with said first packet;
submitting said first packet for processing by said first processor;
searching a flow database for said first flow index, said flow database comprising a collection of flow indexes; and
if said first flow index is not found in said flow database, storing said first flow index in said flow database. - View Dependent Claims (42, 43, 44, 45, 46, 47)
-
-
48. A computer readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method of distributing network traffic processing among a plurality of processors in a multiprocessor computer, the method comprising:
-
receiving a first packet at a network interface of a multiprocessor computer;
producing a first flow index to identify a first communication flow comprising said first packet;
generating from said first flow index an identifier of a first processor of a plurality of processors of said multiprocessor computer;
associating said first processor identifier with said first packet;
submitting said first packet for processing by said first processor;
searching a flow database for said first flow index, said flow database comprising a collection of flow indexes; and
if said first flow index is not found in said flow database, storing said first flow index in said flow database.
-
-
49. A method of distributing network traffic processing among a plurality of processors in a multiprocessor computer having a host and a network interface device, comprising:
-
transferring control of a transport-level connection corresponding to a first type of transport-level protocol from said host to said network interface device;
processing, on said host, a second type of transport-level protocol;
receiving from a network a first packet corresponding to a second type of transport-level protocol;
identifying, by said network interface device, a processor on said host to process said first packet; and
submitting said first packet for processing by said first processor. - View Dependent Claims (50, 51)
-
-
52. A multiprocessor computer for receiving and processing packets corresponding to a plurality protocols from a network, the computer comprising:
-
a host;
a network interface device for said host;
a first set of instructions, stored on said host, to transfer control of a transport-level connection corresponding to a first type of transport-level protocol from said host to said network interface device;
a second set of instructions, stored on said host, to process a second type of transport-level protocol; and
a third set of instructions, stored on said network interface device, to identify a processor to process a first packet received from a network and corresponding to said second type of transport-level protocol. - View Dependent Claims (53, 54)
-
Specification