US6327625B1 - FIFO-based network interface supporting out-of-order processing - Google Patents
FIFO-based network interface supporting out-of-order processing Download PDFInfo
- Publication number
- US6327625B1 US6327625B1 US09/451,395 US45139599A US6327625B1 US 6327625 B1 US6327625 B1 US 6327625B1 US 45139599 A US45139599 A US 45139599A US 6327625 B1 US6327625 B1 US 6327625B1
- Authority
- US
- United States
- Prior art keywords
- packet
- packets
- buffer
- receipt
- order
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0236—Filtering by address, protocol, port number or service, e.g. IP-address or URL
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/34—Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/624—Altering the ordering of packets in an individual queue
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6245—Modifications to standard FIFO or LIFO
Definitions
- the present invention relates to computer networks and to interface devices for connecting host computers to networks. More particularly, the present invention relates to the management of data traffic through network interface cards in network connected systems.
- priority packets are developed which are suitable for carrying real-time video or audio signals. These priority packets are processed ahead of other packets in sequence when possible to improve the throughput and reduce the latency of processing for this class of packet.
- network security is supported for some types of packets.
- the Internet security IPsec protocols are being developed. (Request For Comments, 2401 Security Architecture for the Internaet Protocol, Internet Engineering Task Force). According to security protocols, the payload and/or the header and other control data associated with the packet are protected using authentication and encryption processes. Accordingly, a variety of priority schemes and other schemes involving processing of packets according to particular processes like encryption through the network have been developed.
- the FIFO structure in network interface cards suffers the disadvantage that it is inflexible in the sequence of processing of packets being transferred through the interface, that is, a FIFO structure supports only sequential data transfer. Each packet being loaded will be unloaded through the same sequence determined by the order of receipt of the packet into a typical FIFO-based network interface. Therefore, the processing of packets according to protocols which may benefit from processing out of order must be executed before the packets are delivered to the network interface, or after the packets leave the network interface.
- the present invention provides support for priority and Internet Protocol security packets, and other protocols at the network interface level and in conjunction with FIFO-based packet buffers.
- the present invention supports such protocols by allowing out of order processing of certain packets in the FIFO. In this manner, 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.
- One aspect the present invention is a computer system that comprises a host processor and a network interface having a first port coupled to the host processor and a second port adapted for at least one of receiving data from and transmitting data to a network.
- a buffer is coupled to the first and second ports and 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 is included in the network interface 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 other packet types.
- a data filter is coupled with the buffer to generate identifiers identifying packets of data stored in the buffer as members of one of a plurality of packet types.
- Logic maintains a list of packets stored in the buffer having a particular packet type. The logic to transfer the packets is responsive to the list to determine the order in which a given packet is transferred out of the buffer.
- priority packets are identified and entries placed in a queue of priority packets on the network interface. Packets identified in the queue are transferred out of the buffer ahead of other packets not identified in the queue.
- packets of other types are transferred out of the buffer.
- packets of other types may be flushed from the buffer to minimize data overruns and other errors in the transfer of the packets.
- packets of the particular types are suitable for processing according to a process such as an encryption or authentication process. Such packets are identified and read out of the buffer for such processing.
- a control parameter is associated with the packet which indicates whether such processing has completed and whether the packet is ready for transfer.
- Logic which transfers packets out of the buffer is responsive to the control parameter to skip the packet and transfer a following packet in the buffer out of order. When the processing is complete, the control parameter is updated and the logic transferring packets out of the buffer is notified that the skipped packet may be transferred.
- the logic to transfer the packet includes processing resources which perform, in various combinations and orders, the following functions:
- write a parameter in the control field indicating the packet type has one of a plurality of packet types, including a first packet type, a second packet type and a third packet type;
- the invention comprises a network interface, an integrated circuit for use in a network interface, and a processing method for transferring packets through the network interface.
- Priority packets and packets such as IPSec packets can be marked in a header using packet filter logic. Priority packets can be transmitted or uploaded prior to normal packet traffic. Also, if the FIFO space is near a full threshold, the priority packet transfer is temporarily suspended. Normal packets in the FIFO ahead of priority packets can be unloaded first to free up FIFO space to prevent the undesirable FIFO full condition. Also, IPSec packets can be unloaded from the FIFO and processed by encryption/decryption engines and re-loaded back into the FIFO without affecting normal packet data transfer flow. Whenever an IPSec packet becomes the top packet before processing of the payload is complete, the IPSec packet can be skipped by the packet transfer logic and normal packets and priority packets can be transferred out of the buffer without being blocked.
- normal packets, priority packets and IPSec packets can coexist in a FIFO-based structure.
- the system supports minimum latency and maximum security requirements at the network interface level.
- FIG. 1 is a simplified block diagram of a network interface supporting out of order packet transfer according to the present invention.
- FIG. 2 illustrates in the buffer data structure used in the FIFO based packet buffer in the system of FIG. 1 .
- FIG. 3 is a diagram illustrating the function of the packet filter in the system of FIG. 1 .
- FIG. 4 is a diagram illustrating the function of the packet write process for the system of FIG. 1 .
- FIG. 5 is a diagram illustrating the function of the packet transmit/upload logic in the system of FIG. 1 .
- FIG. 6 is a flow diagram illustrating the packet transfer control process for the system of FIG. 1 .
- FIG. 7 is a diagram illustrating the processing of IPSec packets for the system of FIG. 1 .
- FIG. 8 is a simplified diagram of a computer system including the network interface of the present invention.
- FIG. 1 provides a conceptual diagram of an integrated circuit 10 including the logic for transferring data packets into and out of a FIFO buffer according to the present invention.
- the integrated circuit has a first port 11 and a second port 12 .
- a single FIFO 13 is illustrated, however, in a typical implementation, separate FIFO's are used for the receive (host to network) and transmit (network to host) paths.
- the first port 11 is illustrated as adapted for transferring data from one of the host bus, in this example a PCI bus, and the data network, such as a Gigabit ethernet network.
- the second port 12 is illustrated as adapted for transferring data to one of the network, and the host bus.
- Incoming data on the port 1 1 is supplied to a packet filter 14 which identifies the packet as one of a plurality of packet types. From the packet filter 14 , the packet is stored in the FIFO 13 at a location indicated as current packet data 15 in the diagram. A frame start header 16 for the current packet is set up to carry control data and parameters relevant to the packet.
- the FIFO 13 includes a top packet that includes a frame start header 17 and top packet data 18 . Other packets are stored in the region 19 of the FIFO, as known in the art.
- the packet filter 14 is coupled to a plurality of queues, including in this example an IPsec queue 20 and a priority queue 21 . Also, the packet filter 14 is coupled to a packet download/receive control unit 22 .
- the integrated circuit 10 also includes processing resources for packets of particular types, in this example, IPsec packet processing resources 23 .
- packet upload/transmit control logic 24 is included on the chip. According to the present invention, an out of order packet transfer control block 25 is included which is coupled to logic 26 which maintains an indicator of free space in the FIFO, and logic 27 which maintains a FIFO fullness threshold.
- the packet download/receive control block 22 , the IPsec packet process block 23 , and a packet upload/transmit control block 24 access the buffer 13 through memory arbitration logic 28 and multiplexer 29 . Address and data signals are supplied from the currently active process via the multiplexer 29 to the FIFO to support read and write of data and control parameters.
- FIG. 2 illustrates the data structure and pointers for the packet buffer 13 .
- the top packet includes a top packet frame start header 50 and top packet data 51 .
- a beginning of packet pointer BopPtr 52 points to the beginning of the top packet frame start header 50 .
- a start of packet pointer SopPtr 53 points to the first data byte in the top packet data field 51 .
- a read pointer RdPtr 54 points to a location in the buffer for a current read process.
- An end of packet pointer EopPtr 55 points to the first byte after the end of the top packet data field 51 .
- the end of packet pointer 55 becomes the beginning of packet pointer for the next packet in the sequence when the packets are processed in order. According to the present invention, packets are not always processed in order.
- the data structure also includes a write pointer WrPtr 56 for data being loaded into the buffer in a current packet data field 57 in the illustrated example.
- WrPtr 56 for data being loaded into the buffer in a current packet data field 57 in the illustrated example.
- a current packet frame start header is set up in field 57 .
- the current packet frame start header is set up when the current packet begins loading into the buffer. It carries a control parameter indicating whether the frame start header contains valid data. This parameter will indicate that the frame start header is a “null” header until the current packet data field has completely loaded, or until a valid frame start header is written containing sufficient information to support the transfer of the packet.
- the frame start header includes a first bit which when 0 indicates that the header is a null header. This null header is ignored until the first bit is set to 1.
- the frame start header also includes a priority packet bit, a priority done bit, an IPsec packet bit, and an IPsec packet done bit. These control parameters are carried in the frame start header, or otherwise associated with packets in the buffer. The control parameters indicate the packet type and a state of processing of the packet.
- FIG. 3 illustrates the operation of the packet filter according to one embodiment of the invention.
- This process includes an idle state 100 . From the idle state 100 , the process waits for a null frame start header be written into the buffer (state 101 ). After the process detects the null frame start header, the packet filter checks the header of the packet to determine its type (state 102 ). IPsec packets can be identified by the security association parameters carried in the packet headers. Likewise, priority packets can be identified by parameters indicating the priority of the packet. In this embodiment, the packet filter identifies three classes of packets. The first type of packet is normal packet is indicated by branch 103 . Second type of packet is the IPsec packet is the indicated by branch 104 .
- the third type of packet is the priority packet as indicated by branch 105 . If the packet is a priority packet, then a beginning of packet pointer for the priority packet is written to the priority queue 21 (state 106 ). Also in state 106 , a flag is set in the logic which is used to update the priority packet bit in the frame start header, when the frame start header is finally written. If the packet is an IPsec packet, then a beginning of packet pointer for the packet is stored in the IPsec queue 20 (state 107 ). Also in state 107 , an IPsec flag is set that will be used update the IPsec packet bit when the final frame start header is written. From states 106 and 107 , the process branches to state 108 .
- the process transitions directly state 108 .
- the packet filter waits for the final frame start header to be written into the packet buffer.
- the final frame start header is written, or a runt packet or an uninteresting packet is detected, which causes the process to loop back to state 100 .
- a header is completed for the transmit or upload operation.
- normal packets are transmitted or uploaded according to the order in which they were received in the buffer.
- the packets may need to be transmitted or uploaded out of the sequential order of receipt.
- the present invention defines control parameters in the frame start header to support priority packets, and IPsec packets for the purposes of out of order transfers.
- the packet filter logic scans the packet header or other control structures in the packet. Upon detecting a priority packet, the beginning of packet pointer is pushed into the priority queue. The beginning of packet pointer stored in the queue is used indicate the beginning location of each priority packet. A priority packet flag is also set to inform the current packet write logic that a priority packet bit should be set when the final frame start header of this priority packet is written into the FIFO.
- the priority done bit will be set in the frame start header only when a priority packet is transmitted or uploaded out of the buffer. Since priority packets can be transmitted or uploaded prior to normal packets, after servicing the normal packets, each encountered priority packet which has both the priority packet bit and the priority done bit set will be skipped.
- Detected IPsec packets have an IPsec packet bit and an IPsec done bit defined in the frame start header.
- the packet filter logic scans the packet in the same way as is done for priority packets, and pushes the beginning of packet pointer into the IPsec queue upon detecting an IPsec packet.
- An IPsec packet flag is set which is used by the current packet write logic to set the IPsec packet bit when writing the final frame start header of the IPsec packet.
- processing of the IPsec packet can be executed in the background of the packet transfer process.
- the IPsec done bit is set in the frame start header.
- All of the IPsec packets can be processed in parallel with normal and priority packet transfer processes, as long as they are not the top packet in the FIFO.
- an out of order packet transfer is invoked to prevent the unfinished IPsec packet from blocking subsequent packets in the FIFO.
- a pointer to the skipped IPsec packet is saved, and the data transfer flow is executed for following packets.
- the frame start header for the skipped IPsec packet is checked to determine whether the IPsec done bit has been set. If the IPsec done bit is set indicating that the IPsec processing has been completed, then the saved IPsec packet pointer is used to begin the transfer of the IPsec packet out of the buffer.
- FIG. 4 illustrates one embodiment of the processing of the packet download/receive control block 22 .
- the logic block 22 upon detection of an incoming packet enters a state 120 .
- state 120 a null frame start header write operation is executed to set up the frame start header structure.
- the current write pointer value is stored as the beginning of packet pointer for this incoming packet.
- the write pointer is then incremented to load the packet data.
- state 121 the downloaded or received packet data is written to the FIFO each time a data transfer request is received.
- the write pointer is incremented each time the date is written.
- the logic stays in state 121 until the complete packet is written, or the packet is discarded because of runt packet detection or other process causing uninteresting packets to be discarded. If the packet is to be discarded, the processed branches to state 122 . In state 122 , the write pointer is reset to the value of the beginning of packet pointer for the discarded packet. If the write successfully completes, the process transitions to state 123 . In state 123 , the beginning of packet pointer is used to access the frame start header structure. The final frame start header write process is executed. The priority flag and the IPsec flag are used to set the priority bit and IPsec bit in the frame start header. Next, the process transitions to state 124 in which the write pointer is aligned with the next packet boundary. After aligning the write pointer with the next packet boundary, the process is ready for the following packet, and the process loops back to state 120 .
- packets are loaded into the FIFO through either the download or receive paths in the network interface.
- a null frame start header is written first to mark a dynamic packet, that is, a packet that has not been completely downloaded or received. If parallel tasking is not enabled, the transmit/upload path for the dynamic packet will not be activated until the packet has been completely downloaded/received with a final frame start header being written to mark a static packet.
- packet data is loaded into the FIFO one segment at a time until the complete packet has been written. In case a runt packet is received due to a collision, or the received packet is of no interest to the host computer, the packet will be discarded and the FIFO space will be freed up to accommodate more packets.
- a final frame start header is written into the FIFO to mark the packet as a static packet ready for transfer out of the buffer.
- Either the packet length or the end of packet pointer will also be stored in the frame start header which can be used to identify where the packet ends.
- the priority packet bit will be set for a priority packet, and the IPsec packet bit will be set for an IPsec packet in response to the filter logic.
- the write pointer will be aligned to the next packet boundary.
- FIG. 5 illustrates one embodiment of the operation of the packet transmit/upload logic 24 for the system of FIG. 1 .
- the process begins in idle state 200 .
- the process proceeds to state 201 in which it loads an end of packet pointer.
- This process involves reading a frame start header and loading the end of packet pointer.
- the process asserts an IPsec top flag, if the packet is an IPsec packet, processing of the IPsec packet is not finished, and it is the top packet in the buffer.
- the read pointer is incremented.
- the process branches either on path 202 to the align pointer state 203 , or on path 204 to the load start packet state 205 , for a process involving transmit to the network only.
- state 205 is skipped, and the algorithm branches directly to the data transfer state 206 .
- the process branches to state 203 in three conditions.
- the first condition arises if the packet is a priority packet, and the priority done bit is set.
- the second condition the process branches to state 203 if the packet is an IPsec packet, and processing of the IPsec packet is not finished.
- the process branches to state 203 in the third condition if the packet is not a priority packet nor an IPsec packet, and a normal packet done flag is set.
- state 203 the aligned end of packet pointer is loaded as the read pointer, and the packet transfer done signal is asserted. From align pointer state 203 , the process loops back to state 200 to await the next packet.
- state 205 is entered. Branch 204 is taken if none of the three conditions for branch 202 are met.
- state 205 the start of packet pointer is loaded from the read pointer.
- the data transfer state 206 is entered. In the data transfer state 206 , the packet data is transferred out of the FIFO, and the read pointer is incremented for each segment. From the data transfer state 206 , if a collision is indicated before the last byte of the packet, then branch 207 is taken. In this branch, a retransmit state 208 is entered.
- a retransmit state 208 the read pointer is recovered from the start of packet pointer, and the process loops back to state 206 .
- This condition occurs only for transmits out on the network.
- branch 209 is taken if a maximum collision count, an underrun or jabber error condition is detected before the last byte of the packet.
- a flush state 210 is entered.
- the read pointer is incremented until it reaches the end of packet pointer to flush the packet. Then the process loops to state 203 . If the last byte is successfully reached from the data transfer state 206 , then the branch 211 is taken.
- a transfer complete state 212 is entered. In state 212 , an end of frame signal is asserted for a transmit process. From the transfer complete state 212 , the process loops, unconditionally in the transmit path and upon detection of a receive discard signal in the receive path, to state 203 .
- the packet transmit/upload logic is used to transmit downloaded packets through the transmit packet buffer or upload received packets through the receive packet buffer.
- the frame start header will be read out of the FIFO, the end of packet pointer will be fetched or computed from the read pointer with the packet length to determine the ending location of the packet.
- the read pointer will be incremented and pointed to the packet data.
- the start of packet pointer will be stored for use in retransmit in the event of a collision. Packet data transmit or upload will be performed until the whole packet is transmitted or uploaded.
- a collision will cause the start of packet pointer to be reloaded into the read pointer to cause retransmission.
- the packet is flushed out of the FIFO.
- the end of packet pointer will be aligned to the next packet boundary and loaded into the read pointer.
- a packet transfer done signal is asserted to complete the handshake with the out of order packet transfer control logic. The next packet transmit/upload operation will continue from this point.
- the IPsec top flag will be set upon reading the frame start header to indicate that the IPsec packet has become the top packet but has not finished processing.
- This flag will be used by out of order packet transfer control logic to save the unfinished IPsec packet pointer.
- the subsequent priority or normal packets can then be transmitted/uploaded without waiting for the top IPsec packet processing to complete.
- there are three conditions to skip a packet In order to prevent these packets from being transferred again, because of a previous transfer out of order, there are three conditions to skip a packet.
- the first condition to skip a packet is when both the priority packet and priority done bits are set upon reading the frame start header. Each time a priority packet is transmitted/uploaded, a priority done bit will be set in the frame start header. This bit will be used to insure that after each packet has been transmitted/uploaded, the packet will not be transferred again.
- the second condition to skip a packet is when the IPsec packet bit is set but the IPsec done bit is not set.
- This condition is used to ensure that when out of order transfer is invoked, all the unfinished IPsec packets will be skipped when they are not ready to be transmitted/uploaded.
- the third condition to skip a packet is when both the priority packet and IPsec packet bits are not set, but the normal packet done bit is set. This condition is used to skip normal packets if they have already been transmitted/uploaded because of out of order packet transfer sequences.
- FIG. 6 illustrates the out of order packet transfer logic block. This process begins in idle state 150 . If an IPsec top flag is set indicating that an IPsec packet is at the top of the FIFO structure, then an IPsec pointer is saved. From state 150 , the process takes branch 151 if the FIFO is not empty and the priority queue is empty, or if the priority queue is not empty and the FIFO is near a full condition. On branch 151 , a normal packet transfer state 152 is entered. In the normal packet transfer state 152 , packet transfer request is issued to the process of FIG. 5, for example. The process then waits for a normal packet transfer done signal in state 153 .
- a write normal done state 154 is entered when the packet transfer done signal is asserted and the IPsec enable flag has been set in the logic. If the IPsec enable flag has not been set, and the packet transfer done signal is asserted, the process loops around state 154 on path 155 .
- the write normal done state 154 the beginning of packet pointer is loaded to the write pointer, and a normal done flag is written in the frame start header for the normal packet. From state 154 , or from path 155 , three paths 156 , 157 and 158 may be taken. Path 156 is taken in the condition that the IPsec top flag is not set, or that the IPsec top flag is set and the IPsec done flag is not set and the FIFO is not empty.
- Path 156 loops the process back to the idle state 150 .
- the path 157 is taken if the IPsec top flag is set, and the IPsec done flag is not set but the FIFO is empty. Path 157 proceeds to the wait IPsec done state 160 .
- state 160 the process waits for the IPsec done flag to be asserted and transitions to the restore IPsec pointer state 161 .
- Path 158 is taken if the IPsec top flag is set and the IPsec done flag is set. Path 158 directs the process to the restore IPsec pointer state 161 . From state 161 , the process proceeds to the idle state 150 .
- path 165 is taken.
- the save pointer state 166 is entered.
- state 166 the current normal packet pointer is saved.
- the pop priority queue entry state 167 is entered.
- state 167 the priority packet beginning of packet pointer from the priority queue is popped. The read pointer is loaded using the popped beginning of packet pointer.
- the priority packet transfer state 168 is entered.
- state 168 a packet transfer request is issued. The process then waits for a priority transfer done in state 169 .
- a write priority done state 170 is entered.
- state 170 the beginning of packet pointer is written to the write pointer, and the priority done bit in the frame start header is written. From state 170 , the process may take path 171 back to state 167 , or path 172 to the restore pointer path 173 .
- Path 172 is taken if the priority queue is empty, or if the priority queue is not empty but the FIFO is near full, or if the priority queue is not empty, an IPsec top flag is asserted, and an IPsec done flag is asserted. In this way, if the priority queue is not empty, then normal packets may be processed only if an over flow condition is threatening, or if an IPsec packet is at the top of the FIFO and ready for transfer. In this case, the pointer for the normal packet which was saved in state 166 is restored, and the algorithm loops back to state 150 . If the conditions of path 172 are not met, then there are additional packets in the priority queue to be transferred, and no conditions for preempting the priority transfer are detected. In this case, the process loops to state 167 and pops the beginning of packet pointer for the next packet from the priority queue.
- normal packets, priority packets and IPsec packets can be supported in a single FIFO structure with out of order packet transfer logic. If there are only normal packets in the FIFO, then a packet transfer request is issued for any nonempty FIFO. This request starts the packet transmit/upload sequence. After the frame start header is read out of the FIFO, and the ending location of the packet is identified, packet data will either be transmitted or uploaded. Upon completing the packet data transfer, the pointer is aligned to the next packet boundary. The packet transfer done signal is generated to complete the handshake with the out of order packet transfer logic.
- packets may need to be read out in non-sequential order.
- Each priority packet being stored into the FIFO will have its priority packet bit set in the final frame start header.
- the beginning location of each priority packet is pushed into the priority queue. Any nonempty priority queue initiates the priority packet transfer process in the out of order packet transfer logic. After the current normal packet pointer is saved, the beginning of packet pointer is popped out of the priority queue.
- the packet transfer request is generated. After the priority packet is transferred out of the FIFO, the packet transfer done signal is returned to the out of order packet transfer logic.
- the logic sets a priority done bit into the packet's frame start header.
- This bit is used to ensure that the transmitted/uploaded priority packet will not be transferred again after the normal packet transfer path is resumed.
- the next priority packet will be serviced if the priority queue is not empty.
- the saved normal packet pointer is restored. Packet transfer control is changed back to sequential order processing, and the normal packet pointed to by the restored pointer will be transferred. After transfering the normal packet, any subsequent priority packets with the priority done bit set will be skipped.
- IPsec packets In the condition that there are both normal packets and IPsec packets, if an IPsec packet reaches the top of the FIFO before processing of the payload is complete, then the out of order transfer process may be invoked. Thus, upon each IPsec packet being loaded into the FIFO, an IPsec packet bit is written into the final frame start header and the beginning of packet pointer is pushed into the IPsec queue. An encryption/decryption engine can read the entries in the IPsec queue to process each corresponding packet. After the IPsec packet is read out of the FIFO, data encryption/decryption can be performed. Upon completion of the IPsec packet data processing, the processed packet data is written back into the FIFO, and IPsec done bit is set in the frame start header.
- Normal packets can be transferred out of the FIFO in parallel with the IPsec packet data processing. All IPsec packets which finish processing prior to becoming the top packet can also be transferred out with the normal packet process sequence. In case the IPsec done bit is not set but the IPsec packet has already become the top packet, out of order packet transfer is invoked. The pointer for the top IPsec packet is saved, and the following normal packets will be transferred out one by one and the normal done bit will be set each time the normal packet is transferred. IPsec packets that are not the top packet will be skipped since their IPsec done bits are not set. Upon completing each normal packet or skipping of the IPsec packet, the IPsec done flag will be checked.
- this bit will indicate that the top IPsec packet has completed processing and the saved top IPsec packet pointer should be restored. After transferring the top IPsec packet, the above sequences will repeat. Normal packets without the normal done bit set will be transferred. If the normal done bit is set, then the packet will be skipped. For an IPsec packet with the IPsec done bit set, the packet will be transferred. If the IPsec done bit is not set in an IPsec packet, the pointer for this packet will be saved and the out of order transfer sequence will be invoked.
- the packet transfer sequence is the same as a FIFO having normal packets with the priority packets as long as processing of IPsec packets is done before they become the top packet.
- the priority queue is not empty, the current packet pointer will be saved and priority packets are transferred out of the FIFO. After either the priority queue is empty, or FIFO fullness reaches a fullness threshold, the current packet pointer will be retrieved to resume the normal packet transfer sequence. All the IPsec packets with the IPsec done bit set in the frame start header will be treated as normal packets and transferred to the normal packet transfer sequence.
- the pointer for the unfinished IPsec packet will be saved.
- either one or two levels of out of order transfer will be invoked.
- One level of out of order transfer will be performed if there is no priority packet currently present. Normal packets will be transferred if the normal done bit is not set; otherwise it will be skipped.
- An IPsec packet should always be skipped with the assumption that subsequent IPsec packet processing cannot be finished until the top IPsec packet is completed.
- the IPsec done flag of the top packet will be checked. If the top IPsec packet has finished processing as indicated by the IP second done flag, the saved top IPsec packet pointer will be restored to transfer the top IPsec packet.
- priority packets exist while the unfinished IPsec packet becomes top packet, two levels of out of order transfers will be performed. After saving the pointer for the unfinished top IPsec packet, the subsequent normal packets will either be transferred or skipped depending on the state of normal done bit. As soon as the priority queue becomes populated with a new entry, the current normal packet pointer will be saved. The priority packets will be transferred until the priority queue is empty or the FIFO reaches a fullness threshold. Normal packet pointers will be restored and control changed back to one level out of order transfer in this case. The control can switch back and forth between one level and two level out of order transfer sequences depending on the status of the priority queue.
- the IPsec done flag Upon each packet being transferred or skipped, the IPsec done flag will be checked. The completion of the top IPsec packet with the IPsec done flag set will force the saved the IPsec packet pointer to be restored and either one level or two level out of order packet transfer control flow will exit to transfer the finished top IPsec packet.
- FIG. 7 illustrates the IPsec packet processing executed in the block 23 of FIG. 1 .
- This process begins in idle state 250 . If the IPsec queue is not empty, then state 251 is entered in which the top value in the IPsec queue is popped. In state 251 , the relocation of an IPsec packet is loaded into the beginning of packet pointer. From state 251 , state 252 is entered, in which the packet length is read from frame start header. The incremented beginning of packet pointer plus the packet length are used to compute an IP end of packet pointer. The incremented beginning of packet pointer is used as an IP read pointer, and the incremented beginning of packet pointer is used as an IP write pointer. From state 252 , path to 253 is taken if the IPsec read request is issued.
- Path 254 is taken if an IPsec write request is issued. If an IPsec read request is entered, then the read transfer state 255 is entered. In this state, a read to of the IPsec packet pointed to by the IP read pointer is executed from the FIFO into the IPsec engine of block 23 . In the IPsec engine 23 asserts that IPsec grant signal, then an IPsec acknowledge signal is issued each time data is read out of the buffer. The IP read pointer is then incremented. From path 254 , when an IPsec write request is issued, the IPsec write transfer state 256 is entered. In state 256 , a write IPsec packet process moves the processed data from the IPsec engine 23 into the buffer at the location indicated by the IP write pointer.
- an IPsec acknowledge is given each time data is written to the buffer.
- the IP write pointer is incremented. From states 255 and 256 , when an IPsec done signal is asserted, then state 257 is entered. In state 257 , the beginning of packet pointer is used to access the frame start header. The IPsec done bit is written into the frame start header, and the IPsec queue pointer is incremented. The process then loops back to state 250 .
- IPsec packets are processed using an encryption/decryption engine in the network interface chip.
- a beginning of packet pointer will be popped out of the IPsec queue. This pointer will be used to access the IPsec packet.
- the length of the IPsec packet will be fetched from the frame start header. After the beginning of packet pointer is incremented to point to the IPsec packet data, the end of the IPsec packet data will be computed with the packet length and stored as the IP end of packet pointer.
- IPsec write pointer and IPsec read pointer are loaded to locate the starting address of the IPsec packet where it is used to read data for processing and write data back after processing is done.
- the beginning of packet pointer will be used to write the IPsec done bit into the frame start header.
- the IPsec queue pointer will be incremented to the next entry and the next IPsec packet will be handled accordingly.
- the top IPsec packet may take a long time to process, and the normal packet traffic flow will not be blocked because these packets can be transferred ahead of the unfinished IPsec packet.
- an undesirable FIFO full condition may be detected after subsequent packets are transferred out of the FIFO because the FIFO free space cannot be reclaimed due to the unfinished top IPsec packet.
- This condition is not a problem for a packet downloaded into the FIFO through the PCI host, because the host will stop downloading if the FIFO is full. Therefore, the host can prevent lost packets. For packets being received from the network, packets could be dropped, and cause a need for re-sending the packet and a resulting performance degradation.
- a method can be used to mark the top IPsec packet as unprocessed and allow it to be transferred out as soon as possible. After this packet is uploaded through the PCI host, software will identify the packet and process it there. Similar FIFO fullness threshold registers could be used to determine whenever a FIFO is near full. When the near full condition occurs, the top unfinished IPsec packet should be transferred out to free up space.
- a single port memory can be used for the FIFO based packet buffer.
- Three different access paths are used in parallel.
- the first path is for the packet download/receive. This path is used to download packets to be transmitted or to receive packets to be uploaded. Only write access to the FIFO exists in this path.
- the second path is used for packet transmit/upload. This path is used to read out packets to be transmitted from the FIFO, or to be uploaded to the PCI host. Only read access to the FIFO can occur in this path.
- the third path is used to service IPsec packet processing and write priority done, normal done and IPsec done bits back to the frame start headers.
- a 128 bit memory data width is used in order to support a 133 MHz PCI-X bus (1066 Megabits/second) and Gigabit wire speeds (125 Megabytes/second rounded up to 133 Megabytes/second).
- a minimum 83 MHz memory clock rate is required to obtain the 1332 Megabits/second bandwidth.
- Memory bandwidth of 133 Megabyte/second can be allocated to the IPsec packet processing and packet complete status updating.
- the sustained access bandwidth cannot exceed 133 Megabytes/second. If higher performance for IPsec processing is desired, then the memory clock rate or data width can be increased.
- the chip also performs a FIFO space calculation.
- a FIFO empty indication is used to determine whether all packets in the FIFO have been transferred out. Since a packet can be transferred out of sequential order, while transferring a priority packet, the saved packet read pointer should be used for comparison with the write pointer to determine the amount of free space in the FIFO, and to determine the FIFO full and FIFO empty states. When an IPsec packet becomes the top packet but has not finished processing, the saved read pointer from the top IPsec packet should be used for the FIFO free space, and FIFO full calculation. The read pointer which is used for reading out nonsequential normal packets or priority packets should be compared with the write pointer for the FIFO empty calculation.
- FIG. 8 provides a basic diagram of a computer system having a host CPU 810 coupled to a bus system 811 , such as a PCI bus.
- the bus 811 interconnects a plurality of PCI clients, including client 812 and the network interface card 813 shown with expanded functional blocks.
- the network interface card 813 includes an application specific integrated circuit ASIC 814 .
- the ASIC 814 includes network interface functions for an Ethernet interface in this embodiment. Other embodiments provide interfaces to other types of the network media.
- other components are interconnected by and supported by the circuit board of the network interface card 813 . For example, a BIOS ROM (not shown), an EEPROM (not shown) and an RJ 45 connector 817 are on the circuit board.
- the ASIC 814 includes a medium access controller 820 coupled to media interface circuitry 821 to the connector 817 .
- the medium access controller 820 is also coupled to a transmit FIFO buffer 822 which is driven by a download engine 823 on the ASIC 814 .
- the download engine 823 is coupled to a PCI bus controller 824 .
- the PCI bus controller 824 is also coupled to an upload engine 825 .
- the upload engine 825 is coupled to a receive FIFO 826 which is connected to the medium access controller 820 .
- the illustration of the ASIC 814 includes basic elements of a network interface controller chip.
- the ASIC 814 includes resources 830 coupled to FIFO structures 822 and 826 , and to the upload and download engines, for managing the out of order transferring of packets into and out of the buffer as described in detail above.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
Claims (36)
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/451,395 US6327625B1 (en) | 1999-11-30 | 1999-11-30 | FIFO-based network interface supporting out-of-order processing |
AU19374/01A AU1937401A (en) | 1999-11-30 | 2000-11-30 | Fifo-based network interface supporting out-of-order processing |
CA2361895A CA2361895C (en) | 1999-11-30 | 2000-11-30 | Fifo-based network interface supporting out-of-order processing |
GB0119018A GB2362245B (en) | 1999-11-30 | 2000-11-30 | Fifo-based network interface supporting out-of-order processing |
PCT/US2000/032660 WO2001040960A1 (en) | 1999-11-30 | 2000-11-30 | Fifo-based network interface supporting out-of-order processing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/451,395 US6327625B1 (en) | 1999-11-30 | 1999-11-30 | FIFO-based network interface supporting out-of-order processing |
Publications (1)
Publication Number | Publication Date |
---|---|
US6327625B1 true US6327625B1 (en) | 2001-12-04 |
Family
ID=23792010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/451,395 Expired - Lifetime US6327625B1 (en) | 1999-11-30 | 1999-11-30 | FIFO-based network interface supporting out-of-order processing |
Country Status (5)
Country | Link |
---|---|
US (1) | US6327625B1 (en) |
AU (1) | AU1937401A (en) |
CA (1) | CA2361895C (en) |
GB (1) | GB2362245B (en) |
WO (1) | WO2001040960A1 (en) |
Cited By (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020041592A1 (en) * | 2000-09-29 | 2002-04-11 | Martin Van Der Zee | Method and system for transmitting data |
US20020131366A1 (en) * | 2000-05-17 | 2002-09-19 | Sharp Clifford F. | System and method for traffic management control in a data transmission network |
US20030023846A1 (en) * | 1999-07-08 | 2003-01-30 | Broadcom Corporation | Classification engine in a cryptography acceleration chip |
US20030110394A1 (en) * | 2000-05-17 | 2003-06-12 | Sharp Clifford F. | System and method for detecting and eliminating IP spoofing in a data transmission network |
US20030131228A1 (en) * | 2002-01-10 | 2003-07-10 | Twomey John E. | System on a chip for network storage devices |
US20030135678A1 (en) * | 2001-09-20 | 2003-07-17 | Andre Gregory S. | Two level multi-tier system bus |
US20030161391A1 (en) * | 2001-09-20 | 2003-08-28 | Andre Gregory S. | System bus transceiver interface |
US20040008711A1 (en) * | 2002-07-09 | 2004-01-15 | Lahti Gregg D. | System and method for anti-replay processing of a data packet |
US6708218B1 (en) * | 2000-06-05 | 2004-03-16 | International Business Machines Corporation | IpSec performance enhancement using a hardware-based parallel process |
US20040107389A1 (en) * | 2002-11-30 | 2004-06-03 | International Business Machines Corporation | System and method for handling out-of-order data supplied by a real-time feed |
US20040123120A1 (en) * | 2002-12-18 | 2004-06-24 | Broadcom Corporation | Cryptography accelerator input interface data handling |
US20040123123A1 (en) * | 2002-12-18 | 2004-06-24 | Buer Mark L. | Methods and apparatus for accessing security association information in a cryptography accelerator |
US6760781B1 (en) * | 2000-02-16 | 2004-07-06 | 3Com Corporation | Intelligent packet transmission engine |
US20040143734A1 (en) * | 2002-12-05 | 2004-07-22 | Buer Mark L. | Data path security processing |
US20040170182A1 (en) * | 2001-08-09 | 2004-09-02 | Masaaki Higashida | Transmission apparatus and transmission method |
US20040205332A1 (en) * | 2003-04-12 | 2004-10-14 | Bouchard Gregg A. | IPsec performance optimization |
US20040205336A1 (en) * | 2003-04-12 | 2004-10-14 | Kessler Richard E. | Transparent IPSec processing inline between a framer and a network component |
US20040240473A1 (en) * | 2003-05-28 | 2004-12-02 | Alok Kumar | Method and system for maintaining partial order of packets |
US6862282B1 (en) * | 2000-08-29 | 2005-03-01 | Nortel Networks Limited | Method and apparatus for packet ordering in a data processing system |
US20050081003A1 (en) * | 2003-10-08 | 2005-04-14 | Samsung Electronics Co., Ltd. | Apparatus and method for efficient data storage in a digital logic device |
US6938097B1 (en) | 1999-07-02 | 2005-08-30 | Sonicwall, Inc. | System for early packet steering and FIFO-based management with priority buffer support |
US7003118B1 (en) * | 2000-11-27 | 2006-02-21 | 3Com Corporation | High performance IPSEC hardware accelerator for packet classification |
US20060069847A1 (en) * | 2004-09-30 | 2006-03-30 | Lloyd Robert F | Corruption tolerant method and system for deploying and modifying data in flash memory |
US20060098675A1 (en) * | 2004-11-05 | 2006-05-11 | Michitaka Okuno | Traffic control method for network equipment |
US20060101153A1 (en) * | 2002-05-09 | 2006-05-11 | Antoine Boucher | Store and forward architecture |
US20060190641A1 (en) * | 2003-05-16 | 2006-08-24 | Stephen Routliffe | Buffer management in packet switched fabric devices |
WO2005065020A3 (en) * | 2004-01-07 | 2006-08-24 | Aladdin Knowledge Systems Ltd | A method for speeding up the pass time of an executable through a checkpoint |
US20060218316A1 (en) * | 2005-03-22 | 2006-09-28 | International Business Machines Corporation | System and method for efficient implementation of a shared receive queue |
US20070011359A1 (en) * | 2005-06-01 | 2007-01-11 | Jin-Ru Chen | Multi-class data transmission apparatus and related method thereof |
US20070165638A1 (en) * | 2006-01-13 | 2007-07-19 | Cisco Technology, Inc. | System and method for routing data over an internet protocol security network |
US7269666B1 (en) * | 2000-06-30 | 2007-09-11 | Intel Corporation | Memory utilization in a network interface |
US20080031269A1 (en) * | 2006-08-04 | 2008-02-07 | Takeshi Shimizu | System and Method for Bypassing an Output Queue Structure of a Switch |
US20080056267A1 (en) * | 2002-03-15 | 2008-03-06 | Packeteer Corporation, A Delaware Corporation | Method and System for Controlling Network Traffic within the Same Connection with Different Packet Tags by Varying The Policies Applied to a Connection |
US20080071924A1 (en) * | 2005-04-21 | 2008-03-20 | Chilukoor Murali S | Interrupting Transmission Of Low Priority Ethernet Packets |
US7349399B1 (en) * | 2002-09-20 | 2008-03-25 | Redback Networks, Inc. | Method and apparatus for out-of-order processing of packets using linked lists |
US7349398B1 (en) * | 2001-12-31 | 2008-03-25 | Redback Networks, Inc. | Method and apparatus for out-of-order processing of packets |
US7434043B2 (en) | 2002-12-18 | 2008-10-07 | Broadcom Corporation | Cryptography accelerator data routing unit |
US20080291833A1 (en) * | 2007-05-25 | 2008-11-27 | Gustav Gerald Vos | Method for buffer control for network device |
US7487304B1 (en) * | 2001-10-23 | 2009-02-03 | Teplin Application Limited | Packet processor memory interface with active packet list |
US7533154B1 (en) | 2004-02-04 | 2009-05-12 | Advanced Micro Devices, Inc. | Descriptor management systems and methods for transferring data of multiple priorities between a host and a network |
US7568110B2 (en) | 2002-12-18 | 2009-07-28 | Broadcom Corporation | Cryptography accelerator interface decoupling from cryptography processing cores |
US7581048B1 (en) * | 2001-06-29 | 2009-08-25 | Emc Corporation | Method and apparatus for providing continuous communication between computers |
US7676611B2 (en) * | 2004-10-01 | 2010-03-09 | Qlogic, Corporation | Method and system for processing out of orders frames |
US7698413B1 (en) | 2004-04-12 | 2010-04-13 | Nvidia Corporation | Method and apparatus for accessing and maintaining socket control information for high speed network connections |
US7826469B1 (en) * | 2009-03-09 | 2010-11-02 | Juniper Networks, Inc. | Memory utilization in a priority queuing system of a network device |
US7899913B2 (en) | 2003-12-19 | 2011-03-01 | Nvidia Corporation | Connection management system and method for a transport offload engine |
US7930377B2 (en) | 2004-04-23 | 2011-04-19 | Qlogic, Corporation | Method and system for using boot servers in networks |
US20110131284A1 (en) * | 2009-11-30 | 2011-06-02 | Fujitsu Semiconductor Limited | Message reception |
US7957379B2 (en) | 2004-10-19 | 2011-06-07 | Nvidia Corporation | System and method for processing RX packets in high speed network applications using an RX FIFO buffer |
US7990975B1 (en) | 2003-07-21 | 2011-08-02 | Qlogic, Corporation | Method and system for using extended fabric features with fibre channel switch elements |
US8065439B1 (en) | 2003-12-19 | 2011-11-22 | Nvidia Corporation | System and method for using metadata in the context of a transport offload engine |
US20110307577A1 (en) * | 2003-12-19 | 2011-12-15 | Mcdaniel Scott | Method and system for transmit scheduling for multi-layer network interface controller (nic) operation |
US8135842B1 (en) | 1999-08-16 | 2012-03-13 | Nvidia Corporation | Internet jack |
US8176545B1 (en) | 2003-12-19 | 2012-05-08 | Nvidia Corporation | Integrated policy checking system and method |
US8295484B2 (en) | 2004-12-21 | 2012-10-23 | Broadcom Corporation | System and method for securing data from a remote input device |
US8504728B1 (en) * | 2003-11-05 | 2013-08-06 | Globalfoundries Inc. | Network interface with secondary data and packet information storage and memory control systems to accommodate out-of-order data processing and split transactions on a host system bus |
US8549170B2 (en) | 2003-12-19 | 2013-10-01 | Nvidia Corporation | Retransmission system and method for a transport offload engine |
WO2014043309A1 (en) * | 2012-09-13 | 2014-03-20 | Thomson Licensing | Method of random access message retrieval from first-in-first-out transport mechanism |
US9015467B2 (en) | 2002-12-05 | 2015-04-21 | Broadcom Corporation | Tagging mechanism for data path security processing |
US9264426B2 (en) | 2004-12-20 | 2016-02-16 | Broadcom Corporation | System and method for authentication via a proximate device |
US9942175B1 (en) * | 2014-03-27 | 2018-04-10 | Marvell Israel (M.I.S.L) Ltd. | Efficient storage of sequentially transmitted packets in a network device |
US20180322075A1 (en) * | 2017-05-08 | 2018-11-08 | Apposha Co., Ltd. | Method for processing client requests in a cluster system, a method and an apparatus for processing i/o according to the client requests |
US10516627B2 (en) | 2016-01-27 | 2019-12-24 | Innovasic, Inc. | Ethernet frame injector |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6658480B2 (en) | 1997-10-14 | 2003-12-02 | Alacritech, Inc. | Intelligent network interface system and method for accelerated protocol processing |
US6757746B2 (en) | 1997-10-14 | 2004-06-29 | Alacritech, Inc. | Obtaining a destination address so that a network interface device can write network data without headers directly into host memory |
US6434620B1 (en) | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US6687758B2 (en) | 2001-03-07 | 2004-02-03 | Alacritech, Inc. | Port aggregation for network connections that are offloaded to network interface devices |
US6427173B1 (en) | 1997-10-14 | 2002-07-30 | Alacritech, Inc. | Intelligent network interfaced device and system for accelerated communication |
US6226680B1 (en) | 1997-10-14 | 2001-05-01 | Alacritech, Inc. | Intelligent network interface system method for protocol processing |
US6427171B1 (en) | 1997-10-14 | 2002-07-30 | Alacritech, Inc. | Protocol processing stack for use with intelligent network interface device |
US6697868B2 (en) | 2000-02-28 | 2004-02-24 | Alacritech, Inc. | Protocol processing stack for use with intelligent network interface device |
US7284070B2 (en) | 1997-10-14 | 2007-10-16 | Alacritech, Inc. | TCP offload network interface device |
US7042898B2 (en) | 1997-10-14 | 2006-05-09 | Alacritech, Inc. | Reducing delays associated with inserting a checksum into a network message |
US8782199B2 (en) | 1997-10-14 | 2014-07-15 | A-Tech Llc | Parsing a packet header |
US6591302B2 (en) | 1997-10-14 | 2003-07-08 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding to a TCP connection |
US6389479B1 (en) | 1997-10-14 | 2002-05-14 | Alacritech, Inc. | Intelligent network interface device and system for accelerated communication |
US8019901B2 (en) | 2000-09-29 | 2011-09-13 | Alacritech, Inc. | Intelligent network storage interface system |
US7543087B2 (en) | 2002-04-22 | 2009-06-02 | Alacritech, Inc. | Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device |
US7190670B2 (en) | 2002-10-04 | 2007-03-13 | Nokia Corporation | Method and apparatus for multimedia streaming in a limited bandwidth network with a bottleneck link |
US8539513B1 (en) | 2008-04-01 | 2013-09-17 | Alacritech, Inc. | Accelerating data transfer in a virtual computer system with tightly coupled TCP connections |
US8341286B1 (en) | 2008-07-31 | 2012-12-25 | Alacritech, Inc. | TCP offload send optimization |
US9306793B1 (en) | 2008-10-22 | 2016-04-05 | Alacritech, Inc. | TCP offload device that batches session layer headers to reduce interrupts as well as CPU copies |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4783730A (en) | 1986-09-19 | 1988-11-08 | Datapoint Corporation | Input/output control technique utilizing multilevel memory structure for processor and I/O communication |
US5212778A (en) | 1988-05-27 | 1993-05-18 | Massachusetts Institute Of Technology | Message-driven processor in a concurrent computer |
US5828835A (en) | 1995-05-10 | 1998-10-27 | 3Com Corporation | High throughput message passing process using latency and reliability classes |
US5987113A (en) * | 1996-12-23 | 1999-11-16 | Northern Telecom Limited | Long distance phone tag service |
US6138189A (en) * | 1996-02-08 | 2000-10-24 | Advanced Micro Devices, Inc. | Network interface having adaptive transmit start point for each packet to avoid transmit underflow |
US6226680B1 (en) | 1997-10-14 | 2001-05-01 | Alacritech, Inc. | Intelligent network interface system method for protocol processing |
-
1999
- 1999-11-30 US US09/451,395 patent/US6327625B1/en not_active Expired - Lifetime
-
2000
- 2000-11-30 WO PCT/US2000/032660 patent/WO2001040960A1/en active Application Filing
- 2000-11-30 CA CA2361895A patent/CA2361895C/en not_active Expired - Lifetime
- 2000-11-30 AU AU19374/01A patent/AU1937401A/en not_active Abandoned
- 2000-11-30 GB GB0119018A patent/GB2362245B/en not_active Expired - Lifetime
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4783730A (en) | 1986-09-19 | 1988-11-08 | Datapoint Corporation | Input/output control technique utilizing multilevel memory structure for processor and I/O communication |
US5212778A (en) | 1988-05-27 | 1993-05-18 | Massachusetts Institute Of Technology | Message-driven processor in a concurrent computer |
US5828835A (en) | 1995-05-10 | 1998-10-27 | 3Com Corporation | High throughput message passing process using latency and reliability classes |
US6138189A (en) * | 1996-02-08 | 2000-10-24 | Advanced Micro Devices, Inc. | Network interface having adaptive transmit start point for each packet to avoid transmit underflow |
US5987113A (en) * | 1996-12-23 | 1999-11-16 | Northern Telecom Limited | Long distance phone tag service |
US6226680B1 (en) | 1997-10-14 | 2001-05-01 | Alacritech, Inc. | Intelligent network interface system method for protocol processing |
Cited By (101)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6938097B1 (en) | 1999-07-02 | 2005-08-30 | Sonicwall, Inc. | System for early packet steering and FIFO-based management with priority buffer support |
US20030023846A1 (en) * | 1999-07-08 | 2003-01-30 | Broadcom Corporation | Classification engine in a cryptography acceleration chip |
US7600131B1 (en) | 1999-07-08 | 2009-10-06 | Broadcom Corporation | Distributed processing in a cryptography acceleration chip |
US7996670B1 (en) * | 1999-07-08 | 2011-08-09 | Broadcom Corporation | Classification engine in a cryptography acceleration chip |
US8135842B1 (en) | 1999-08-16 | 2012-03-13 | Nvidia Corporation | Internet jack |
US6760781B1 (en) * | 2000-02-16 | 2004-07-06 | 3Com Corporation | Intelligent packet transmission engine |
US7380272B2 (en) | 2000-05-17 | 2008-05-27 | Deep Nines Incorporated | System and method for detecting and eliminating IP spoofing in a data transmission network |
US20090288156A1 (en) * | 2000-05-17 | 2009-11-19 | Deep Nines, Inc. | System and method for detecting and eliminating ip spoofing in a data transmission network |
US20020131366A1 (en) * | 2000-05-17 | 2002-09-19 | Sharp Clifford F. | System and method for traffic management control in a data transmission network |
US6930978B2 (en) * | 2000-05-17 | 2005-08-16 | Deep Nines, Inc. | System and method for traffic management control in a data transmission network |
US20030110394A1 (en) * | 2000-05-17 | 2003-06-12 | Sharp Clifford F. | System and method for detecting and eliminating IP spoofing in a data transmission network |
US7865945B2 (en) | 2000-05-17 | 2011-01-04 | Sharp Clifford F | System and method for detecting and eliminating IP spoofing in a data transmission network |
US6708218B1 (en) * | 2000-06-05 | 2004-03-16 | International Business Machines Corporation | IpSec performance enhancement using a hardware-based parallel process |
US7269666B1 (en) * | 2000-06-30 | 2007-09-11 | Intel Corporation | Memory utilization in a network interface |
US6862282B1 (en) * | 2000-08-29 | 2005-03-01 | Nortel Networks Limited | Method and apparatus for packet ordering in a data processing system |
US20020041592A1 (en) * | 2000-09-29 | 2002-04-11 | Martin Van Der Zee | Method and system for transmitting data |
US7003118B1 (en) * | 2000-11-27 | 2006-02-21 | 3Com Corporation | High performance IPSEC hardware accelerator for packet classification |
US7581048B1 (en) * | 2001-06-29 | 2009-08-25 | Emc Corporation | Method and apparatus for providing continuous communication between computers |
US8085666B2 (en) * | 2001-08-09 | 2011-12-27 | Panasonic Corporation | Transmission apparatus and transmission method |
US20040170182A1 (en) * | 2001-08-09 | 2004-09-02 | Masaaki Higashida | Transmission apparatus and transmission method |
US20100080126A1 (en) * | 2001-08-09 | 2010-04-01 | Matsushita Electric Industrial Co., Ltd. | Transmission apparatus and transmission method |
US7606155B2 (en) * | 2001-08-09 | 2009-10-20 | Panasonic Corporation | Transmission apparatus and transmission method |
US20030161391A1 (en) * | 2001-09-20 | 2003-08-28 | Andre Gregory S. | System bus transceiver interface |
US20030135678A1 (en) * | 2001-09-20 | 2003-07-17 | Andre Gregory S. | Two level multi-tier system bus |
US7336700B2 (en) * | 2001-09-20 | 2008-02-26 | Lockheed Martin Corporation | System bus transceiver interface |
US7191271B2 (en) | 2001-09-20 | 2007-03-13 | Lockheed Martin Corporation | Two level multi-tier system bus |
US7487304B1 (en) * | 2001-10-23 | 2009-02-03 | Teplin Application Limited | Packet processor memory interface with active packet list |
US7349398B1 (en) * | 2001-12-31 | 2008-03-25 | Redback Networks, Inc. | Method and apparatus for out-of-order processing of packets |
US7852846B2 (en) | 2001-12-31 | 2010-12-14 | Ericsson Ab | Method and apparatus for out-of-order processing of packets |
US20080259960A1 (en) * | 2001-12-31 | 2008-10-23 | Favor John G | Method and apparatus for Out-of-Order Processing of Packets |
EP1328104A3 (en) * | 2002-01-10 | 2005-10-19 | Broadcom Corporation | System on a chip for network storage devices |
US7246245B2 (en) | 2002-01-10 | 2007-07-17 | Broadcom Corporation | System on a chip for network storage devices |
US20030131228A1 (en) * | 2002-01-10 | 2003-07-10 | Twomey John E. | System on a chip for network storage devices |
US20080056267A1 (en) * | 2002-03-15 | 2008-03-06 | Packeteer Corporation, A Delaware Corporation | Method and System for Controlling Network Traffic within the Same Connection with Different Packet Tags by Varying The Policies Applied to a Connection |
US8331223B2 (en) * | 2002-03-15 | 2012-12-11 | Packeteer, Inc. | Method and system for controlling network traffic within the same connection with different packet tags by varying the policies applied to a connection |
US7577703B2 (en) * | 2002-05-09 | 2009-08-18 | Tvworks, Llc | Store and forward architecture |
US20060101153A1 (en) * | 2002-05-09 | 2006-05-11 | Antoine Boucher | Store and forward architecture |
US7237262B2 (en) | 2002-07-09 | 2007-06-26 | Itt Manufacturing Enterprises, Inc. | System and method for anti-replay processing of a data packet |
US20040008711A1 (en) * | 2002-07-09 | 2004-01-15 | Lahti Gregg D. | System and method for anti-replay processing of a data packet |
US7808999B2 (en) | 2002-09-20 | 2010-10-05 | Ericsson Ab | Method and apparatus for out-of-order processing of packets using linked lists |
US20080259928A1 (en) * | 2002-09-20 | 2008-10-23 | Chen Edmund G | Method and Apparatus for Out-of-Order Processing of Packets using Linked Lists |
US7349399B1 (en) * | 2002-09-20 | 2008-03-25 | Redback Networks, Inc. | Method and apparatus for out-of-order processing of packets using linked lists |
US7051245B2 (en) * | 2002-11-30 | 2006-05-23 | International Business Machines Corporation | System and method for handling out-of-order data supplied by a real-time feed |
US20040107389A1 (en) * | 2002-11-30 | 2004-06-03 | International Business Machines Corporation | System and method for handling out-of-order data supplied by a real-time feed |
US8055895B2 (en) | 2002-12-05 | 2011-11-08 | Broadcom Corporation | Data path security processing |
US20040143734A1 (en) * | 2002-12-05 | 2004-07-22 | Buer Mark L. | Data path security processing |
US9015467B2 (en) | 2002-12-05 | 2015-04-21 | Broadcom Corporation | Tagging mechanism for data path security processing |
US7587587B2 (en) * | 2002-12-05 | 2009-09-08 | Broadcom Corporation | Data path security processing |
US7434043B2 (en) | 2002-12-18 | 2008-10-07 | Broadcom Corporation | Cryptography accelerator data routing unit |
US20040123123A1 (en) * | 2002-12-18 | 2004-06-24 | Buer Mark L. | Methods and apparatus for accessing security association information in a cryptography accelerator |
US7568110B2 (en) | 2002-12-18 | 2009-07-28 | Broadcom Corporation | Cryptography accelerator interface decoupling from cryptography processing cores |
US20040123120A1 (en) * | 2002-12-18 | 2004-06-24 | Broadcom Corporation | Cryptography accelerator input interface data handling |
WO2004093373A3 (en) * | 2003-04-12 | 2005-04-14 | Cavium Networks | Ipsec performance optimization |
US7814310B2 (en) | 2003-04-12 | 2010-10-12 | Cavium Networks | IPsec performance optimization |
WO2004093373A2 (en) * | 2003-04-12 | 2004-10-28 | Cavium Networks | Ipsec performance optimization |
US7398386B2 (en) * | 2003-04-12 | 2008-07-08 | Cavium Networks, Inc. | Transparent IPSec processing inline between a framer and a network component |
US20040205332A1 (en) * | 2003-04-12 | 2004-10-14 | Bouchard Gregg A. | IPsec performance optimization |
US20040205336A1 (en) * | 2003-04-12 | 2004-10-14 | Kessler Richard E. | Transparent IPSec processing inline between a framer and a network component |
US20060190641A1 (en) * | 2003-05-16 | 2006-08-24 | Stephen Routliffe | Buffer management in packet switched fabric devices |
US20040240473A1 (en) * | 2003-05-28 | 2004-12-02 | Alok Kumar | Method and system for maintaining partial order of packets |
US7411902B2 (en) * | 2003-05-28 | 2008-08-12 | Intel Corporation | Method and system for maintaining partial order of packets |
US7990975B1 (en) | 2003-07-21 | 2011-08-02 | Qlogic, Corporation | Method and system for using extended fabric features with fibre channel switch elements |
US20050081003A1 (en) * | 2003-10-08 | 2005-04-14 | Samsung Electronics Co., Ltd. | Apparatus and method for efficient data storage in a digital logic device |
US7293132B2 (en) * | 2003-10-08 | 2007-11-06 | Samsung Electronics Co., Ltd. | Apparatus and method for efficient data storage using a FIFO memory |
US8504728B1 (en) * | 2003-11-05 | 2013-08-06 | Globalfoundries Inc. | Network interface with secondary data and packet information storage and memory control systems to accommodate out-of-order data processing and split transactions on a host system bus |
US8065439B1 (en) | 2003-12-19 | 2011-11-22 | Nvidia Corporation | System and method for using metadata in the context of a transport offload engine |
US20110307577A1 (en) * | 2003-12-19 | 2011-12-15 | Mcdaniel Scott | Method and system for transmit scheduling for multi-layer network interface controller (nic) operation |
US8176545B1 (en) | 2003-12-19 | 2012-05-08 | Nvidia Corporation | Integrated policy checking system and method |
US7899913B2 (en) | 2003-12-19 | 2011-03-01 | Nvidia Corporation | Connection management system and method for a transport offload engine |
US8542585B2 (en) * | 2003-12-19 | 2013-09-24 | Broadcom Corporation | Method and system for transmit scheduling for multi-layer network interface controller (NIC) operation |
US8549170B2 (en) | 2003-12-19 | 2013-10-01 | Nvidia Corporation | Retransmission system and method for a transport offload engine |
WO2005065020A3 (en) * | 2004-01-07 | 2006-08-24 | Aladdin Knowledge Systems Ltd | A method for speeding up the pass time of an executable through a checkpoint |
US7533154B1 (en) | 2004-02-04 | 2009-05-12 | Advanced Micro Devices, Inc. | Descriptor management systems and methods for transferring data of multiple priorities between a host and a network |
US7698413B1 (en) | 2004-04-12 | 2010-04-13 | Nvidia Corporation | Method and apparatus for accessing and maintaining socket control information for high speed network connections |
US7930377B2 (en) | 2004-04-23 | 2011-04-19 | Qlogic, Corporation | Method and system for using boot servers in networks |
US20060069847A1 (en) * | 2004-09-30 | 2006-03-30 | Lloyd Robert F | Corruption tolerant method and system for deploying and modifying data in flash memory |
US7313648B2 (en) * | 2004-09-30 | 2007-12-25 | Rockwell Automation Technologies, Inc. | Corruption tolerant method and system for deploying and modifying data in flash memory |
US7676611B2 (en) * | 2004-10-01 | 2010-03-09 | Qlogic, Corporation | Method and system for processing out of orders frames |
US7957379B2 (en) | 2004-10-19 | 2011-06-07 | Nvidia Corporation | System and method for processing RX packets in high speed network applications using an RX FIFO buffer |
US20060098675A1 (en) * | 2004-11-05 | 2006-05-11 | Michitaka Okuno | Traffic control method for network equipment |
US7656887B2 (en) * | 2004-11-05 | 2010-02-02 | Hitachi, Ltd. | Traffic control method for network equipment |
US9264426B2 (en) | 2004-12-20 | 2016-02-16 | Broadcom Corporation | System and method for authentication via a proximate device |
US8295484B2 (en) | 2004-12-21 | 2012-10-23 | Broadcom Corporation | System and method for securing data from a remote input device |
US9288192B2 (en) | 2004-12-21 | 2016-03-15 | Broadcom Corporation | System and method for securing data from a remote input device |
US20060218316A1 (en) * | 2005-03-22 | 2006-09-28 | International Business Machines Corporation | System and method for efficient implementation of a shared receive queue |
US7496698B2 (en) * | 2005-03-22 | 2009-02-24 | International Business Machines Corporation | System and method for efficient implementation of a shared receive queue |
US20080071924A1 (en) * | 2005-04-21 | 2008-03-20 | Chilukoor Murali S | Interrupting Transmission Of Low Priority Ethernet Packets |
US20070011359A1 (en) * | 2005-06-01 | 2007-01-11 | Jin-Ru Chen | Multi-class data transmission apparatus and related method thereof |
US20070165638A1 (en) * | 2006-01-13 | 2007-07-19 | Cisco Technology, Inc. | System and method for routing data over an internet protocol security network |
US7826468B2 (en) * | 2006-08-04 | 2010-11-02 | Fujitsu Limited | System and method for bypassing an output queue structure of a switch |
US20080031269A1 (en) * | 2006-08-04 | 2008-02-07 | Takeshi Shimizu | System and Method for Bypassing an Output Queue Structure of a Switch |
US20080291833A1 (en) * | 2007-05-25 | 2008-11-27 | Gustav Gerald Vos | Method for buffer control for network device |
US8588241B1 (en) | 2009-03-09 | 2013-11-19 | Juniper Networks, Inc. | Memory utilization in a priority queuing system of a network device |
US7826469B1 (en) * | 2009-03-09 | 2010-11-02 | Juniper Networks, Inc. | Memory utilization in a priority queuing system of a network device |
US8682996B2 (en) * | 2009-11-30 | 2014-03-25 | Fujitsu Semiconductor Limited | Apparatus for handling message reception |
US20110131284A1 (en) * | 2009-11-30 | 2011-06-02 | Fujitsu Semiconductor Limited | Message reception |
WO2014043309A1 (en) * | 2012-09-13 | 2014-03-20 | Thomson Licensing | Method of random access message retrieval from first-in-first-out transport mechanism |
US9423976B2 (en) * | 2012-09-13 | 2016-08-23 | Thomson Licensing | System and method of expedited message processing using a first-in-first-out transport mechanism |
US9942175B1 (en) * | 2014-03-27 | 2018-04-10 | Marvell Israel (M.I.S.L) Ltd. | Efficient storage of sequentially transmitted packets in a network device |
US10516627B2 (en) | 2016-01-27 | 2019-12-24 | Innovasic, Inc. | Ethernet frame injector |
US20180322075A1 (en) * | 2017-05-08 | 2018-11-08 | Apposha Co., Ltd. | Method for processing client requests in a cluster system, a method and an apparatus for processing i/o according to the client requests |
Also Published As
Publication number | Publication date |
---|---|
CA2361895A1 (en) | 2001-06-07 |
GB2362245A (en) | 2001-11-14 |
AU1937401A (en) | 2001-06-12 |
CA2361895C (en) | 2010-04-13 |
GB0119018D0 (en) | 2001-09-26 |
WO2001040960A8 (en) | 2001-11-01 |
WO2001040960A1 (en) | 2001-06-07 |
GB2362245B (en) | 2004-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6327625B1 (en) | FIFO-based network interface supporting out-of-order processing | |
US6970921B1 (en) | Network interface supporting virtual paths for quality of service | |
US7724740B1 (en) | Computer system and network interface supporting class of service queues | |
US7260104B2 (en) | Deferred queuing in a buffered switch | |
US7894480B1 (en) | Computer system and network interface with hardware based rule checking for embedded firewall | |
JP4205181B2 (en) | Method and apparatus for burst transfer of ATM packet header and data to a host computer system | |
AU666769B2 (en) | Apparatus for automatic initiation of data transmission | |
CA2124452C (en) | Method and apparatus for processing data within stations of a communication network | |
US7146451B2 (en) | PCI bridge and data transfer methods | |
US7327674B2 (en) | Prefetching techniques for network interfaces | |
US9479464B1 (en) | Computer system and network interface with hardware based packet filtering and classification | |
US6366968B1 (en) | Physical write packets processing when posted write error queue is full, with posted write error queue storing physical write requests when posted write packet fails | |
US20040193733A1 (en) | Network protocol engine | |
US20040267982A1 (en) | Read/write command buffer pool resource management using read-path prediction of future resources | |
US7860120B1 (en) | Network interface supporting of virtual paths for quality of service with dynamic buffer allocation | |
CN112559436B (en) | Context access method and system of RDMA communication equipment | |
US7984210B2 (en) | Method for transmitting a datum from a time-dependent data storage means | |
US20080263171A1 (en) | Peripheral device that DMAS the same data to different locations in a computer | |
US7581044B1 (en) | Data transmission method and system using credits, a plurality of buffers and a plurality of credit buses | |
US7054962B2 (en) | Embedded system having broadcast data storing controller | |
US7000060B2 (en) | Method and apparatus for ordering interconnect transactions in a computer system | |
US6601150B1 (en) | Memory management technique for maintaining packet order in a packet processing system | |
US20030214909A1 (en) | Data processing device and its input/output method and program | |
JPH0695322B2 (en) | Transfer control system | |
JP2008148181A (en) | Communication apparatus and communication control method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: 3COM CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:WANG, CHI-LIE;YANG, LI-JAU;HO, NGO THANH;REEL/FRAME:010426/0271 Effective date: 19991129 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Free format text: PAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
AS | Assignment |
Owner name: HEWLETT-PACKARD COMPANY, CALIFORNIA Free format text: MERGER;ASSIGNOR:3COM CORPORATION;REEL/FRAME:024630/0820 Effective date: 20100428 |
|
AS | Assignment |
Owner name: HEWLETT-PACKARD COMPANY, CALIFORNIA Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE SEE ATTACHED;ASSIGNOR:3COM CORPORATION;REEL/FRAME:025039/0844 Effective date: 20100428 |
|
AS | Assignment |
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD COMPANY;REEL/FRAME:027329/0044 Effective date: 20030131 |
|
AS | Assignment |
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS Free format text: CORRECTIVE ASSIGNMENT PREVIUOSLY RECORDED ON REEL 027329 FRAME 0001 AND 0044;ASSIGNOR:HEWLETT-PACKARD COMPANY;REEL/FRAME:028911/0846 Effective date: 20111010 |
|
FPAY | Fee payment |
Year of fee payment: 12 |
|
AS | Assignment |
Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.;REEL/FRAME:037079/0001 Effective date: 20151027 |