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 that is a part 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, wherein said destination is disposed in said multiprocessor computer;
combining said source identifier and said destination identifier to form a first flow index for identifying a first communication flow comprising said first packet;
storing a control block holding the state of said first communication flow;
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; and
transferring control of said control block from said first processor to a second processor of said plurality of processors.
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.
-
Citations
48 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 that is a part 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, wherein said destination is disposed in said multiprocessor computer; combining said source identifier and said destination identifier to form a first flow index for identifying a first communication flow comprising said first packet; storing a control block holding the state of said first communication flow; 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; and transferring control of said control block from said first processor to a second processor of said plurality of processors. - 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 that is a part 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, wherein said destination identifier identifies a destination in said multiprocessor host computer; combining said source identifier and said destination identifier to form a first flow key; storing a control block holding the state of a first communication flow comprising said first packet; 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; transferring control of said control block from said first processor to a second processor of said plurality of processors; 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, wherein said destination identifier identifies a destination in said multiprocessor computer from a packet; and combine said source identifier and said destination identifier to form a flow key for identifying a communication 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; and a memory adapted to store a control block holding the state of said communication flow; wherein said load distributor generates a first identifier of a first processor for a first set of packets in said communication flow and generates a second identifier of a second processor for a second set of packets in a second communication flow. - View Dependent Claims (21, 22)
-
-
23. A non-transitory 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 that is a part 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, wherein said destination is disposed in said multiprocessor computer; combining said source identifier and said destination identifier to form a first flow index for identifying a first communication flow comprising said first packet; storing a control block holding the state of said first communication flow; 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; and transferring control of said control block from said first processor to a second processor of said plurality of processors. - 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 that is a part of a multiprocessor computer; producing a first flow index to identify a first communication flow comprising said first packet; storing a control block holding the state of said first communication flow; 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; issuing an alert to said multiprocessor computer to notify said multiprocessor computer of said storage of said first packet; and transferring control of said control block from said first processor to a second processor of said plurality of processors. - View Dependent Claims (35, 36, 37, 38, 39)
-
-
40. A non-transitory 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 that is a part of a multiprocessor computer; producing a first flow index to identify a first communication flow comprising said first packet; storing a control block holding the state of said first communication flow; 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; issuing an alert to said multiprocessor computer to notify said multiprocessor computer of said storage of said first packet; and transferring control of said control block from said first processor to a second processor of said plurality of processors.
-
-
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 that is a part of a multiprocessor computer; producing a first flow index to identify a first communication flow comprising said first packet; storing a control block holding the state of said first communication flow; 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; if said first flow index is not found in said flow database, storing said first flow index in said flow database; and transferring control of said control block from said first processor to a second processor of said plurality of processors. - View Dependent Claims (42, 43, 44, 45, 46, 47)
-
-
48. A non-transitory 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 that is a part of a multiprocessor computer; producing a first flow index to identify a first communication flow comprising said first packet; storing a control block holding the state of said first communication flow; 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; if said first flow index is not found in said flow database, storing said first flow index in said flow database; and transferring control of said control block from said first processor to a second processor of said plurality of processors.
-
Specification