US6567859B1 - Device for translating medium access control dependent descriptors for a high performance network - Google Patents
Device for translating medium access control dependent descriptors for a high performance network Download PDFInfo
- Publication number
- US6567859B1 US6567859B1 US09/300,296 US30029699A US6567859B1 US 6567859 B1 US6567859 B1 US 6567859B1 US 30029699 A US30029699 A US 30029699A US 6567859 B1 US6567859 B1 US 6567859B1
- Authority
- US
- United States
- Prior art keywords
- circuit
- descriptor
- data
- coupled
- header
- 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 - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
-
- 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/36—Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9068—Intermediate storage in different physical parts of a node or terminal in the network interface card
- H04L49/9073—Early interruption upon arrival of a fraction of a packet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/166—IP fragmentation; TCP segmentation
Definitions
- the present invention generally relates to the field of computer networking. More particularly, the present invention relates to the field of descriptors corresponding to a medium access control (MAC) device of a network interface card.
- MAC medium access control
- Computers have become an integral tool used in a wide variety of different applications, such as in finance and commercial transactions, computer-aided design and manufacturing, health care, telecommunication, education, etc. Computers are finding new applications as a result of advances in hardware technology and rapid development in software technology. Furthermore, a computer system's functionality is dramatically enhanced by coupling stand-alone computers together to form a computer network. In a computer network, users may readily exchange files, share information stored on a common database, pool resources, and communicate via electronic mail (e-mail) and via video teleconferencing.
- e-mail electronic mail
- LAN local area network
- NIC network interface card
- CPU central processing unit
- Some NICs may also be used to connect a computer to the Internet.
- NICs are also used to communicate over a LAN communications network standard referred to as Ethernet.
- TCP Transmission Control Protocol
- CPU central processor unit
- Ethernet has a maximum transmission frame size of 1514 bytes. Of the 1514 bytes of the transmission frame, there are a lot of bytes which are used for overhead. For instance, some bytes are used for addressing, other bytes are used for header information, etc. As such, the bytes remaining for the actual payload of data within each transmission frame are considerably less (e.g., 1460 bytes) than the 1514 bytes. It should be appreciated that there are disadvantages associated with this prior art process of segmenting data for transmission over a network.
- the TCP segmentation process performed by the processor of the host computer becomes a bottleneck of the critical performance path, thereby slowing down the data throughput of the NIC.
- the processor becomes a bottleneck for data throughput of the NIC when used at high network speeds.
- One of the prior art solutions for improving the throughput of the NIC is to implement an embedded processor onto the NIC in order to specifically perform the TCP segmentation process. In this manner, a large majority of the segmentation process is removed from the processor of the host computer and moved onto the embedded processor of the NIC.
- This prior art solution does improve the throughput of the NIC, but there are disadvantages associated with this prior art solution.
- One of the main disadvantages of this prior art solution is that it does not effectively solve the problem of data throughput of a NIC when used with high speed networks (e.g., gigabit levels).
- the embedded processor of the NIC now becomes the bottleneck of the critical performance path thereby slowing down the data throughput of the NIC.
- the bottleneck for data throughput of the NIC is moved from the host processor to the processor of the NIC.
- the present invention provides a method and system for providing significantly improved data throughput of a connection card which is used with a high speed network (e.g., gigabit levels). Moreover, the present invention provides a method and system which achieves the above accomplishment and provides a descriptor which can be tailored to a corresponding MAC device.
- a high speed network e.g., gigabit levels
- one embodiment of the present invention includes a circuit for translating a medium access control descriptor from a first format into a second format.
- the circuit includes a translator circuit coupled to receive a descriptor which corresponds to data stored within a memory.
- the translator circuit translates the descriptor from a first descriptor format into a second descriptor format.
- the circuit includes a medium access control (MAC) circuit coupled to the translator circuit to receive the descriptor in the second descriptor format. More specifically, the medium access control circuit uses the descriptor in the second descriptor format to retrieve the data from the memory.
- MAC medium access control
- the present invention includes a circuit for translating a medium access control descriptor from a first format into a second format.
- the circuit includes a translator circuit coupled to receive a descriptor which corresponds to data stored within a local memory.
- the translator circuit translates the descriptor from a first descriptor format into a second descriptor format.
- the circuit also includes a medium access control (MAC) circuit coupled to the translator circuit to receive the descriptor in the second descriptor format.
- the medium access control circuit uses the descriptor in the second descriptor format to retrieve the data from the local memory.
- MAC medium access control
- the present invention includes a method for translating a medium access control descriptor from a first format into a second format.
- the method includes the step of receiving a descriptor which corresponds to data stored within a memory.
- the method also includes the step of translating the descriptor from a first descriptor format into a second descriptor format. Additionally, the method includes the step of retrieving the data from the memory.
- the present invention includes the steps of the method described above and further includes the step of transmitting the data.
- FIG. 1 is a schematic diagram of an exemplary computer system used to perform steps of the present method in accordance with one embodiment of the present invention.
- FIG. 2 is a schematic diagram of a network interface card, in accordance with one embodiment of the present invention, coupled to a host computer system.
- FIG. 3 is a block diagram of circuitry of the TCP/IP header modification state machine of FIG. 2 which alters the data fields of TCP and IP headers in accordance with one embodiment of the present invention.
- FIG. 4 is a flowchart of steps performed in accordance with one embodiment of the present invention for performing a transmission control protocol (TCP) segmentation process within hardware.
- TCP transmission control protocol
- FIG. 5 is a flowchart of steps performed in accordance with one embodiment of the present invention for using a descriptor signal to generate a frame segment descriptor within hardware.
- FIG. 6 is a flowchart of steps performed in accordance with one embodiment of the present invention for translating a medium access control (MAC) descriptor from a first descriptor format into a second descriptor format.
- MAC medium access control
- FIG. 1 illustrates an exemplary computer system 100 used to perform the present invention. It is appreciated that system 100 of FIG. 1 is exemplary only and that the present invention can operate within a number of different computer systems including general purpose networked computer systems, embedded computer systems, and stand alone computer systems. Additionally, computer system 100 of FIG. 1 is well adapted having computer readable media such as, for example, a floppy disk, a compact disc, and the like coupled thereto. Such computer readable media is not shown coupled to computer system 100 in FIG. 1 for purposes of clarity.
- System 100 of FIG. 1 includes an address/data bus 102 for communicating information, and a central processor unit 104 coupled to bus 102 for processing information and instructions.
- Central processor unit 104 may be an 80 ⁇ 86-family microprocessor or any other type of processor.
- System 100 also includes data storage features such as a computer usable volatile memory 106 , e.g., random access memory (RAM), coupled to bus 102 for storing information and instructions for central processor unit 104 , computer usable non-volatile memory 108 , e.g., read only memory (ROM), coupled to bus 102 for storing static information and instructions for the central processor unit 104 , and a data storage unit 110 (e.g., a magnetic or optical disk and disk drive) coupled to bus 102 for storing information and instructions.
- RAM random access memory
- ROM read only memory
- System 100 of the present invention also includes an optional alphanumeric input device 112 , which includes alphanumeric and function keys, is coupled to bus 102 for communicating information and command selections to central processor unit 104 .
- System 100 also optionally includes a cursor control device 114 coupled to bus 102 for communicating user input information and command selections to central processor unit 104 .
- System 100 of the present embodiment also includes an optional display device 116 coupled to bus 102 for displaying information.
- optional display device 116 may be a liquid crystal device, cathode ray tube, or other display device suitable for creating graphic images and alphanumeric characters recognizable to a user.
- Optional cursor control device 114 allows the computer user to dynamically signal the two dimensional movement of a visible symbol (cursor) on a display screen of display device 116 .
- cursor control device 114 are known in the art including a mouse, trackball, touch pad, joystick or special keys on alphanumeric input device 112 capable of signaling movement of a given direction or manner of displacement.
- a cursor can be directed and/or activated via input from alphanumeric input device 112 using special keys and key sequence commands.
- the present invention is also well suited to directing a cursor by other means such as, for example, voice commands. A more detailed discussion of the method and system embodiments of the present invention are found below.
- a network interface card (NIC) 118 coupled to bus 102 is connected to a network 120 and controls the flow of information of computer system 100 over network 120 .
- Data packets, such as Ethernet packets, that are incoming and outgoing via network 120 are transmitted and received by a Medium Access Control (MAC) circuit 140 of NIC 118 .
- MAC Medium Access Control
- FIG. 2 a schematic diagram of a host computer system 100 having a network interface card 118 coupled thereto is shown.
- One of the main purposes of the different hardware components of network interface card 118 is to perform all of the transmission control protocol (TCP) segmentation process.
- TCP transmission control protocol
- the segmentation process is removed from processor 104 of computer system 100 , thereby significantly reducing its segmentation process utilization and allowing processor 104 to be utilized for other processes.
- the data throughput of network interface card 118 is able to function at high wire speeds (e.g., gigabit levels).
- the network interface card is a peripheral component.
- the present invention is also well suited to an embodiment employing various other peripheral components. That is, the present invention is well suited to an embodiment in which the peripheral component is, for example, a PCMCIA (personal computer memory card international association) card.
- the present invention is well suited to an embodiment in which the peripheral component is, for example, a compact form factor I/O (input/output) card.
- the present invention is well suited to use in an embodiment in which the peripheral component is, for example, a rate controller, a small computer system interface (SCSI) controller, a graphics card, and the like.
- the present invention is well suited to be use, for example, in a non-peripheral component environment such as an application specific integrated circuit (ASIC) disposed on a motherboard, an embedded circuit, and the like.
- ASIC application specific integrated circuit
- a host driver 202 running on processor 104 (FIG. 1) of host system 100 is responsible for creating a descriptor for a data file stored within host memory 106 which is to be eventually transferred by network interface card (NIC) 118 over network 120 .
- the descriptor includes information about where the data file is stored within host memory 106 , the size of the data file, along with other information.
- host driver 202 prepares a list of these descriptors and makes them available to a descriptor direct memory access (DMA) circuit 204 by updating a write pointer register (not shown).
- DMA direct memory access
- the descriptor DMA 204 is used by NIC 118 to access the descriptors created by host software.
- descriptor DMA circuit 204 which is located on NIC 118 , is coupled to Peripheral Component Interconnect (PCI) bus 102 .
- PCI Peripheral Component Interconnect
- bus 102 of the present embodiment can be any type of communication bus and is not limited to being a PCI bus.
- control words contain packet related information and flags. It should be appreciated that the packet information and flags are well known by those of ordinary skill in the art.
- host driver 202 of FIG. 2 can make a request to protocol not to support Transmission Control Protocol/Internet Protocol (TCP/IP) options.
- TCP/IP Transmission Control Protocol/Internet Protocol
- the length of IP and TCP headers in the present embodiment are fixed at 20 bytes each.
- the descriptor will assume a format having a field of one or more control words, followed by a descriptor address field which is followed by a descriptor length field.
- descriptor download DMA circuit 204 retrieves the descriptors located within host memory 106 . Specifically, once descriptor download DMA circuit 204 detects a difference between its read pointer and the software controlled write pointer, it initiates bus master DMA operation to download all of the available descriptors located in host memory 106 over PCI bus 102 . It is appreciated that descriptor download DMA circuit 204 is coupled to a descriptor queue 206 . Upon retrieving the descriptors from host memory 106 , descriptor download DMA circuit 204 transmits them to descriptor queue 206 to be temporarily stored. It should be appreciated that descriptor queue 206 of the present embodiment is a first-in-first-out (FIFO) memory device. Furthermore, descriptor queue 206 is coupled to a TCP segmentation state machine 208 . Moreover, descriptor queue 206 serves an empty flag along with the stored descriptors to TCP segmentation state machine 208 .
- FIFO first-in-first-out
- TCP segmentation state machine 208 of the present embodiment determines if the data file (payload) corresponding to the descriptors stored within host memory 106 needs to be TCP segmented into Ether frames. If the data file does not need TCP segmentation, TCP segmentation state machine 208 reconstructs the received descriptors into a format defined for hardware queues 210 and 224 . Conversely, if the data file needs TCP segmentation, TCP segmentation state machine 208 creates another set of descriptors wherein each descriptor describes a fragment or a segment of the data file. In other words, the data file stored within host memory 106 is virtually segmented down into a number of frames.
- each of the descriptors created by TCP segmentation state machine 208 is going to contain a pointer to a location in host memory 106 where a reusable “template” for the IP header is stored. Furthermore, each descriptors is also going to contain a pointer to a location in host memory 106 where a reusable “template” for the TCP header is stored. Additionally, each of the descriptors would also include a control word along with pointers to where the data file (payload) is stored within host memory 106 . Also, each descriptor contains a pointer to a location in host memory 106 where a reusable template for the Medium Access Control (MAC) header is stored.
- MAC Medium Access Control
- TCP segmentation state machine 208 These descriptors are then transmitted by TCP segmentation state machine 208 to hardware queues 210 and 224 for temporary storage. It should be appreciated that the templates for the TCP, IP, and frame headers are created by host driver 202 and are used for every segment. It should be further appreciated that the present embodiment is well suited to operate without the templates described above.
- TCP segmentation state machine 208 of FIG. 2 extracts the control fields from the descriptors. If TCP segmentation is not needed, TCP segmentation state machine 208 reconstructs the descriptors into a format defined for a data download DMA circuit 212 . It is appreciated that TCP segmentation state machine 208 is coupled to hardware queues 210 and 224 . As such, TCP segmentation state machine 208 transmits the revised structure descriptors to hardware queues 210 and 224 where they are temporarily stored. This revised structure descriptor information stored within hardware queue 210 will subsequently be used by data download DMA circuit 212 to transfer data.
- TCP segmentation state machine 208 examines certain fields in the header and each fragment length, and performs TCP segmentation. The results are stored into hardware queues 210 and 224 , as described above. It should be appreciated that if there are more than one data descriptor in the current TCP segment and one or more of them has a length of less that the maximum segment size (MSS), TCP segmentation state machine 208 of the present embodiment will combine these descriptors into one Ether frame, but not to exceed the MSS. This process is performed in order to achieve high efficiency and high performance. Furthermore, TCP segmentation state machine 208 of the present embodiment will not make the descriptors visible to data download DMA circuit 212 unless it constitutes a complete Ether frame, or any other type of transmission frame.
- MSS maximum segment size
- the reason TCP segmentation state machine 208 transmits the revised structure descriptors to hardware queue 224 of a translator module 232 will be described in detail below.
- TCP segmentation state machine 208 of FIG. 2 also saves the following information into the descriptor structure (not shown) of hardware queues 210 and 224 .
- the information stored within hardware queue 210 is later used by a TCP/IP header modification state machine 214 .
- TCP segmentation state machine 208 stores a totalLength[15:0] which includes information for the field of Total_Length in the IP header.
- the totalLength is a summation of the length of the payload, the length of the IP header, and the length of the TCP header. It should be appreciated that the totalLength excludes the Medium Access Control (MAC) header.
- MAC Medium Access Control
- TCP segmentation state machine 208 also stores a dontFragment which includes information for the field of Flags in the IP header.
- TCP segmentation state machine 208 also stores a sequenceNumber[31:0] which includes information for the field of Sequence_Number in the TCP header. It should be appreciated that the value for the first Ether frame is equal to the original value in the TCP header template. Furthermore, the value for the second Ether frame is equal to the value of the first frame plus the value of the payload length of the first frame, and so on.
- TCP segmentation state machine 208 also stores push and fin (finish) flags which include information for the flags of PUSH and FIN, respectively, in the TCP header. It should be appreciated that for intermediate frames, these flags are cleared. It should be further appreciated that these flags are set for the last Ether frame of the current TCP segment. TCP segmentation state machine 208 also stores the Identification (ID) field in the IP header, which is incremented for each frame. TCP segmentation state machine 208 also stores the lastFragment flag in the IP header, which is set at the last frame. It should be appreciated that the TCP segmentation state machine 208 of the present embodiment is well suited to perform segmentation for any type of transmission protocol.
- ID Identification
- TCP segmentation state machine 208 of the present embodiment is well suited to perform segmentation for any type of transmission protocol.
- Hardware queues 210 and 224 temporarily store the descriptors and the information described above, received from TCP segmentation state machine 208 .
- hardware queues 210 and 224 of the present embodiment are first-in-first-out (FIFO) memory devices.
- hardware queues 210 and 224 can be implemented either with on-chip or off-chip memory with respect to NIC 118 .
- One of the advantages of having hardware queues 210 and 224 located on-chip is that the restructure/segmentation process takes much less time than the off-chip alternative. Furthermore, the on-chip alternative would minimize access to the memory sub-system.
- hardware queue 210 is coupled to data download DMA circuit 212 . As such, hardware queue 210 transmits the stored information described above to data download DMA circuit 212 .
- data download DMA circuit 212 utilizes the descriptors to retrieve and download the data file, TCP templates, IP templates, and frame header stored within host memory 106 . It should be appreciated that the templates stored within host memory 106 are reused for each segment of the data file because the structure is the same, but some information is modified later in the process and is described below. In other words, data download DMA circuit 212 receives the descriptor information from hardware queue 210 and uses it to retrieve the actual data stored within host memory 106 . It is appreciated that data download DMA circuit 212 is coupled to primary PCI bus 102 . It should be further appreciated that data download DMA circuit 212 extracts certain fields in the descriptor structure and makes them available to other modules. For example, data download DMA circuit 212 passes fragSize, last fragment, sequence number, etc. to TCP/IP header modification state machine 214 , which is described in detail below.
- TCP/IP header modification state machine 214 The primary function of TCP/IP header modification state machine 214 is to insert the correct information (e.g., sequence number) into the TCP and IP template headers on-the-fly while the data is being transmitted by data download DMA circuit 212 toward a transmit (Tx) FIFO memory device 218 .
- TCP/IP header modification state machine 214 operates in a synchronized mode with data download DMA circuit 212 .
- TCP/IP header modification state machine 214 scans the data stream appearing at the input terminal of Tx FIFO memory device 218 and modifies on-the-fly the totalLength, dontFragment, sequenceNumber, push flag, fin flag, identification field, and lastFragment flag, which are described above with reference to TCP segmentation state machine 208 . It should be appreciated that TCP/IP header modification state machine 214 alters the data fields for several locations of TCP and IP headers, which circuit implementation is described below with reference to FIG. 3 . The importance of this task is to guarantee frame integrity and correct information for TCP/IP checksum circuit 216 , so checksum circuit 216 can generate valid computations. It is appreciated that data download DMA circuit 212 is coupled to TCP/IP header modification state machine 214 .
- the TCP/IP header modification state machine 214 and data download DMA circuit 212 are each coupled to a byte packing and alignment circuit 215 . It is well known that when data download DMA circuit 212 reads the data from host memory 106 , the data can be located in fragments at disjointed addresses. As such, data download DMA circuit 212 transmits the data to byte packing and alignment circuit 215 in order for it to align the data into aligned words (e.g., 8 byte words). Within the present embodiment, it is appreciated that the function performed by byte packing and alignment circuit 215 is specific for the design of Tx FIFO memory device 218 .
- byte packing and alignment circuit 215 receives data from data download DMA circuit 212 and TCP/IP modification state machine 214 and shifts the data around in order to properly align it for reception by Tx FIFO memory device 218 . It should be appreciated that byte packing and alignment is well known by those of ordinary skill in the art.
- checksum circuit 216 is used for providing a process of error detection for a receiver device coupled to network 120 , which eventually receives the data transmitted by NIC 118 .
- the process of checksumming is well known by those of ordinary skill in the art.
- checksum circuit 216 of the present embodiment views the received data stream from byte packing and alignment circuit 215 as 16 bit integers which it sums. For example, there is a checksum on the IP header which basically checksums those 20 bytes. The checksum is a 2 byte value which is placed into a field in the IP header. Furthermore, there is a checksum calculated on a pseudo header, plus the TCP header, plus the payload.
- checksum circuit 216 is coupled between byte packing and alignment circuit 215 and Tx FIFO memory device 218 . It should be appreciated that the checksum circuit 216 of the present embodiment can alternatively be coupled between Tx FIFO memory device 218 and a local memory device 220 .
- the Tx FIFO memory device 218 of the present embodiment receives the data from checksum circuit 216 and byte packing and alignment circuit 215 and temporarily stores it. It should be appreciated that Tx FIFO memory device 218 of the present embodiment is a first-in-first-out (FIFO) memory device. It is further appreciated that Tx FIFO memory device 218 is coupled to local memory device 220 . As such, Tx FIFO memory device 218 subsequently transmits the stored data to local memory device 220 to be stored.
- a Medium Access Control (MAC) circuit 140 of the present embodiment is coupled to local memory device 220 . The data remains stored within local memory device 220 until MAC circuit 140 has the capability to retrieve it.
- MAC Medium Access Control
- TCP segmentation state machine 208 transmits the descriptors and other information to hardware queue 224 of translator module 232 is to enable the subsequent translation of the descriptors from one format to another format.
- the primary function of translator module 232 is to translate the descriptors created by TCP segmentation state machine 208 into descriptors which are compatible with MAC circuit 140 .
- NIC 118 can be used with different MAC circuits which operate using descriptors of different formats.
- software code is written to run on processor 226 which translates the descriptors created by TCP segmentation state machine 208 into descriptors which are compatible with the particular MAC circuit located on NIC 118 . It should be appreciated that if MAC circuit 140 does not receive descriptors in the proper format, MAC circuit 140 is unable to access the data stored within local memory 220 which is to be transmitted over network 120 by NIC 118 .
- hardware queue 224 receives the descriptors and information from TCP segmentation state machine 208 , as described above. It should be appreciated that hardware queue 224 operates in a similar manner as hardware queue 210 , described above. Hardware queue 224 is coupled to processor 226 . As such, hardware queue 224 transmits the stored descriptor information described above to processor 226 . Processor 226 translates the received descriptors from one format into another format. For example, MAC circuit 140 wants to receive descriptors that have the address field followed by the length field, but TCP segmentation state machine 208 creates descriptors with the length field followed by the address field.
- processor 226 changes the order of the address and length fields of the received descriptors in order to put them into the compatible format for MAC circuit 140 .
- the translated descriptors are then transmitted by processor 226 to MAC dependent queue 228 for temporary storage. It is appreciated that processor 226 is coupled to MAC dependent queue 228 .
- MAC dependent queue 228 is coupled to MAC circuit 140 via a bus 230 . It should be appreciated that MAC dependent queue 228 is implemented within the present embodiment as a first-in-first-out (FIFO) memory device. MAC dependent queue 228 outputs the translated descriptors to MAC circuit 140 . Upon receiving the translated descriptors, MAC circuit 140 is able to access the data stored within local memory 220 . MAC circuit 140 uses the translated descriptors to retrieve the stored data from local memory device 220 in preparation for transmitting it over network 120 . It should be appreciated that MAC circuit 140 arbitrates for use of network 120 and then transmits the data over the network 120 .
- FIFO first-in-first-out
- processor 226 to perform the translation from one descriptor format into another descriptor format, as described above, it allows NIC 118 to be used with a very wide variety of MAC circuits. In other words, all of the circuitry located on NIC 118 , except MAC circuit 140 , can be reused with any type of MAC circuit. As such, the amount of time to produce a new and different NIC is significantly reduce because it doesn't have to be designed and built from scratch. Instead, the present embodiment standardizes a great majority of the NIC circuitry.
- processor 226 of translator module 232 can be implemented in a wide variety of ways.
- a state machine can be built to translate a particular descriptor format into another descriptor format.
- the state machine is designed prior to fabrication of NIC 118 and it typically would only operate with a specific MAC circuit.
- processor 226 can be implemented to translate descriptors for a particular list of MAC circuits.
- different software code segments are created to cause processor 226 to do the translation for all the MAC circuits on the particular list.
- the specific code segment that corresponds to that MAC circuit is enabled during the fabrication of NIC 118 .
- the function of translating a particular descriptor format into another descriptor format of the present embodiment can be performed by many different types of circuitry.
- FIG. 3 is a block diagram of a circuitry 300 of TCP/IP header modification state machine 214 which alters the data fields for several locations of TCP and IP headers.
- the importance of this task is to guarantee frame integrity and correct information for TCP/IP checksum circuit 216 , so the checksum circuit 216 can generate valid computations.
- multiplexer (MUX) 302 of the present embodiment of TCP/IP header modification state machine 214 receives the totalLength, dontFragment, ipFlags, sequenceNumber, and tcpFlags signals from data download DMA 212 , as described above.
- MUX 302 is coupled to receive a muxSel signal 312 from other circuitry of TCP/IP header modification state machine 214 . Additionally, the output of MUX 302 is coupled to an input terminal of MUXs 304 , 306 and 308 .
- circuitry 300 of TCP/IP header modification state machine 214 controls which specific information within the TCP and IP headers is corrected by asserting different values of the muxSel signal 312 to MUX 302 . In this manner, a different signal (e.g., totalLength) is transmitted to the inputs of MUXs 304 , 306 and 308 . It should be appreciated the other input terminals of MUXs 304 , 306 and 308 are coupled to each receive a single specific byte lane which are output by byte packing and alignment circuit 215 (FIG. 2) toward Tx FIFO memory device 218 .
- TCP/IP header modification state machine 214 also controls the output of MUXs 304 , 306 and 308 by asserting a high or low signal over line 310 . Therefore, TCP/IP header modification state machine 214 is able to control where the correct information is inserted into the TCP and IP headers. In this fashion, TCP/IP header modification state machine 214 outputs new byte lanes which are subsequently received by Tx FIFO memory device 218 .
- Flowchart 400 includes processes of the present invention which, in one embodiment, are carried out by a processor and electrical components under the control of computer readable and computer executable instructions.
- the computer readable and computer executable instructions reside, for example, in data storage features such a computer usable volatile memory 106 and/or computer usable non-volatile memory 108 of FIG. 1 .
- steps are exemplary. That is, the present invention is well suited to performing various other steps or variations of the steps recited in FIG. 4 .
- a descriptor signal which corresponds to data stored within memory is received from a host device.
- the host device of the present embodiment can be a computer or any other type of device.
- a segmentation circuit of a network interface card uses the received descriptor signal to generate a frame segment descriptor.
- the frame segment descriptor of the present embodiment can be generated using a Transmission Control Protocol (TCP) segmentation process.
- TCP Transmission Control Protocol
- the frame segment descriptor of the present embodiment can include a Internet Protocol (IP) header and a TCP header.
- IP Internet Protocol
- a data download circuit receives the data from the memory. It should be appreciated that the data download circuit uses the frame segment descriptor to retrieve the data from memory.
- a Medium Access Control (MAC) circuit of the network interface card transmits the data. It should be appreciated that the MAC circuit can transmit the data over a network. After completing step 408 , the present embodiment of flowchart 400 is exited.
- MAC Medium Access Control
- Flowchart 500 includes processes of the present invention which, in one embodiment, are carried out by a processor and electrical components under the control of computer readable and computer executable instructions.
- the computer readable and computer executable instructions reside, for example, in data storage features such a computer usable volatile memory 106 and/or computer usable non-volatile memory 108 of FIG. 1 .
- steps are disclosed in flowchart 500 of FIG. 5, such steps are exemplary. That is, the present invention is well suited to performing various other steps or variations of the steps recited in FIG. 5 .
- step 502 of FIG. 5 the present embodiment determines whether a descriptor queue circuit (e.g., 206 ) is empty. If the descriptor queue circuit is empty, the present embodiment proceeds to the beginning of step 502 . If the descriptor queue circuit is not empty, the present embodiment proceeds to step 504 .
- a descriptor queue circuit e.g., 206
- the present embodiment determines whether a TCP segmentation enable (tcpSegEn) flag is asserted. If the tcpSegEn flag is not asserted (!tcpSegEn) and a hardware queue circuit (e.g., 210 ) is not full (!hwQueueFull), the present embodiment proceeds to step 506 . If the tcpSegEn flag is asserted (tcpSegEn) and the hardware queue circuit is not full (!hwQueueFull), the present embodiment proceeds to step 508 .
- tcpSegEn TCP segmentation enable
- step 506 of FIG. 5 the present embodiment copies the current descriptor structure into the hardware queue. Upon completion of step 506 , the present embodiment proceeds to step 502 .
- the present embodiment determines whether the current descriptor is a header descriptor or a data descriptor using a headerData flag. If the current descriptor is a header descriptor, the present embodiment proceeds to step 510 . If the current descriptor is a data descriptor, the present embodiment proceeds to step 512 .
- step 510 the present embodiment saves the address pointer and length of the current descriptors into local registers for both MAC and TCP/IP headers. Upon completion of step 510 , the present embodiment proceeds to step 502 .
- the present embodiment determines if the current descriptor is the beginning of a new frame. If the current descriptor is the beginning of a new frame, the present embodiment proceeds to step 514 . If the current descriptor is not the beginning of a new frame, the present embodiment proceeds to step 516 .
- step 514 the present embodiment uses the saved header information in order to compile the descriptor structure (DS) for the MAC header and the descriptor structure for the TCP/IP header, which are then saved into the hardware queue circuit.
- DS descriptor structure
- the present embodiment proceeds to step 516 .
- the present embodiment determines whether the length of the current descriptor (desLength) is greater than the maximum segment size (MSS). If the length of the current descriptor is greater than the maximum segment size, the present embodiment proceeds to step 518 . If the length of the current descriptor is not greater than the maximum segment size, the present embodiment proceeds to step 520 .
- step 518 of FIG. 5 the present embodiment performs segmentation and saves all the information as described above with reference to the segmentation station machine 208 of FIG. 2 . Furthermore, the present embodiment sets the lastFragment flag in the control word and also subtracts the value of the maximum segment size (MSS) from the length of the current descriptor (desLength) during step 518 . Upon completion of step 518 , the present embodiment proceeds to step 516 .
- MSS maximum segment size
- the present embodiment determines whether the current descriptor has the last descriptor (lastDescriptor) flag asserted indicating it is the last descriptor for the current TCP segment. If the current descriptor is the last descriptor of the current TCP segment, the present embodiment proceeds to step 524 . If the current descriptor is not the last descriptor of the current TCP segment, the present embodiment proceeds to step 522 .
- step 522 the present embodiment compiles and saves the current descriptor structure and its control words into the hardware queue. Furthermore, the present embodiment reads the next entry from the descriptor queue during step 522 . Upon completion of step 522 , the present embodiment proceeds to step 504 .
- step 524 the present embodiment compiles and saves the current descriptor structure and its control words, including the set lastFragment flag, into the hardware queue. Upon completion of step 524 , the present embodiment proceeds to step 502 .
- Flowchart 600 includes processes of the present invention which, in one embodiment, are carried out by a processor and electrical components under the control of computer readable and computer executable instructions.
- the computer readable and computer executable instructions reside, for example, in data storage features such a computer usable volatile memory 106 and/or computer usable nonvolatile memory 108 of FIG. 1 .
- steps are disclosed in flowchart 600 of FIG. 6, such steps are exemplary. That is, the present invention is well suited to performing various other steps or variations of the steps recited in FIG. 6 .
- step 602 of FIG. 6 in one embodiment of the present invention, a descriptor signal which corresponds to data stored within a memory to be transmitted by a network interface card is received.
- the received descriptor is translated from a first descriptor format into a second descriptor format. It should be appreciated that the translation of the descriptor can be performed within the present embodiment by a processor circuit, a state machine, or any other type of circuitry.
- the data is retrieved from the memory. It should be appreciated that the retrieving of the data can be performed within the present embodiment by a medium access control (MAC) circuit or any other type of circuitry.
- MAC medium access control
- the data is then transmitted. It should be appreciated that the transmitting of the data can be performed within the present embodiment by a medium access control (MAC) circuit, an application specific integrated circuit (ASIC), the network interface card, or any other type of circuitry. Furthermore, it should be further appreciated that the data can be transmitted over a network within the present embodiment. After completing step 608 , the present embodiment of flowchart 600 is exited.
- MAC medium access control
- ASIC application specific integrated circuit
- the present embodiment of flowchart 600 is exited.
- the present invention provides a method and system for providing significantly improved data throughput of a network interface card which is used with a high speed network (e.g., gigabit levels). Moreover, the present invention achieves the above accomplishment and provides a descriptor which can be tailored to a corresponding MAC device.
- a network interface card which is used with a high speed network (e.g., gigabit levels).
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
Claims (25)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/300,296 US6567859B1 (en) | 1999-04-27 | 1999-04-27 | Device for translating medium access control dependent descriptors for a high performance network |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/300,296 US6567859B1 (en) | 1999-04-27 | 1999-04-27 | Device for translating medium access control dependent descriptors for a high performance network |
Publications (1)
Publication Number | Publication Date |
---|---|
US6567859B1 true US6567859B1 (en) | 2003-05-20 |
Family
ID=23158513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/300,296 Expired - Fee Related US6567859B1 (en) | 1999-04-27 | 1999-04-27 | Device for translating medium access control dependent descriptors for a high performance network |
Country Status (1)
Country | Link |
---|---|
US (1) | US6567859B1 (en) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050038958A1 (en) * | 2003-08-13 | 2005-02-17 | Mike Jadon | Disk-array controller with host-controlled NVRAM |
US20060095611A1 (en) * | 2004-11-02 | 2006-05-04 | Standard Microsystems Corporation | Hardware supported peripheral component memory alignment method |
US20060123133A1 (en) * | 2004-10-19 | 2006-06-08 | Hrastar Scott E | Detecting unauthorized wireless devices on a wired network |
US20060288129A1 (en) * | 2005-06-17 | 2006-12-21 | Level 5 Networks, Inc. | DMA descriptor queue read and cache write pointer arrangement |
US7293197B2 (en) | 2003-08-13 | 2007-11-06 | Micro Memory Llc | Non-volatile memory with network fail-over |
US7787481B1 (en) * | 2004-07-19 | 2010-08-31 | Advanced Micro Devices, Inc. | Prefetch scheme to minimize interpacket gap |
US8196199B2 (en) | 2004-10-19 | 2012-06-05 | Airdefense, Inc. | Personal wireless monitoring agent |
US8281392B2 (en) | 2006-08-11 | 2012-10-02 | Airdefense, Inc. | Methods and systems for wired equivalent privacy and Wi-Fi protected access protection |
US8351445B1 (en) * | 2003-11-05 | 2013-01-08 | Globalfoundries Inc. | Network interface systems and methods for offloading segmentation and/or checksumming with security processing |
US20180338267A1 (en) * | 2017-05-19 | 2018-11-22 | Canon Kabushiki Kaisha | Communication apparatus, communication method, and non-transitory computer-readable storage medium |
US20190158429A1 (en) * | 2019-01-29 | 2019-05-23 | Intel Corporation | Techniques to use descriptors for packet transmit scheduling |
US10310811B2 (en) | 2017-03-31 | 2019-06-04 | Hewlett Packard Enterprise Development Lp | Transitioning a buffer to be accessed exclusively by a driver layer for writing immediate data stream |
US10372470B2 (en) | 2016-07-27 | 2019-08-06 | Hewlett Packard Enterprise Development Lp | Copy of memory information from a guest transmit descriptor from a free pool and assigned an intermediate state to a tracking data structure |
US20210232528A1 (en) * | 2021-03-22 | 2021-07-29 | Intel Corporation | Configurable device interface |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5560038A (en) * | 1994-07-22 | 1996-09-24 | Network Peripherals, Inc. | Apparatus for translating frames of data transferred between heterogeneous local area networks |
US5748905A (en) * | 1996-08-30 | 1998-05-05 | Fujitsu Network Communications, Inc. | Frame classification using classification keys |
US5758075A (en) * | 1994-07-29 | 1998-05-26 | International Business Machines Corporation | Multimedia communication apparatus and methods |
US5937169A (en) * | 1997-10-29 | 1999-08-10 | 3Com Corporation | Offload of TCP segmentation to a smart adapter |
-
1999
- 1999-04-27 US US09/300,296 patent/US6567859B1/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5560038A (en) * | 1994-07-22 | 1996-09-24 | Network Peripherals, Inc. | Apparatus for translating frames of data transferred between heterogeneous local area networks |
US5758075A (en) * | 1994-07-29 | 1998-05-26 | International Business Machines Corporation | Multimedia communication apparatus and methods |
US5748905A (en) * | 1996-08-30 | 1998-05-05 | Fujitsu Network Communications, Inc. | Frame classification using classification keys |
US5937169A (en) * | 1997-10-29 | 1999-08-10 | 3Com Corporation | Offload of TCP segmentation to a smart adapter |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050038958A1 (en) * | 2003-08-13 | 2005-02-17 | Mike Jadon | Disk-array controller with host-controlled NVRAM |
US7293197B2 (en) | 2003-08-13 | 2007-11-06 | Micro Memory Llc | Non-volatile memory with network fail-over |
US8351445B1 (en) * | 2003-11-05 | 2013-01-08 | Globalfoundries Inc. | Network interface systems and methods for offloading segmentation and/or checksumming with security processing |
US7787481B1 (en) * | 2004-07-19 | 2010-08-31 | Advanced Micro Devices, Inc. | Prefetch scheme to minimize interpacket gap |
US20060123133A1 (en) * | 2004-10-19 | 2006-06-08 | Hrastar Scott E | Detecting unauthorized wireless devices on a wired network |
US8196199B2 (en) | 2004-10-19 | 2012-06-05 | Airdefense, Inc. | Personal wireless monitoring agent |
US8190796B2 (en) * | 2004-11-02 | 2012-05-29 | Standard Microsystems Corporation | Hardware supported peripheral component memory alignment method |
US20060095611A1 (en) * | 2004-11-02 | 2006-05-04 | Standard Microsystems Corporation | Hardware supported peripheral component memory alignment method |
WO2006138649A1 (en) | 2005-06-17 | 2006-12-28 | Level 5 Networks, Inc. | Dma descriptor queue read and cache write pointer arrangement |
US7496699B2 (en) | 2005-06-17 | 2009-02-24 | Level 5 Networks, Inc. | DMA descriptor queue read and cache write pointer arrangement |
US20060288129A1 (en) * | 2005-06-17 | 2006-12-21 | Level 5 Networks, Inc. | DMA descriptor queue read and cache write pointer arrangement |
US8281392B2 (en) | 2006-08-11 | 2012-10-02 | Airdefense, Inc. | Methods and systems for wired equivalent privacy and Wi-Fi protected access protection |
US10372470B2 (en) | 2016-07-27 | 2019-08-06 | Hewlett Packard Enterprise Development Lp | Copy of memory information from a guest transmit descriptor from a free pool and assigned an intermediate state to a tracking data structure |
US10310811B2 (en) | 2017-03-31 | 2019-06-04 | Hewlett Packard Enterprise Development Lp | Transitioning a buffer to be accessed exclusively by a driver layer for writing immediate data stream |
US20180338267A1 (en) * | 2017-05-19 | 2018-11-22 | Canon Kabushiki Kaisha | Communication apparatus, communication method, and non-transitory computer-readable storage medium |
US10708816B2 (en) * | 2017-05-19 | 2020-07-07 | Canon Kabushiki Kaisha | Communication apparatus, communication method, and non-transitory computer-readable storage medium for performing packetization processing that does not depend on a network interface |
US20190158429A1 (en) * | 2019-01-29 | 2019-05-23 | Intel Corporation | Techniques to use descriptors for packet transmit scheduling |
US12212504B2 (en) * | 2019-01-29 | 2025-01-28 | Intel Corporation | Techniques to use descriptors for packet transmit scheduling |
US20210232528A1 (en) * | 2021-03-22 | 2021-07-29 | Intel Corporation | Configurable device interface |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6526446B1 (en) | Hardware only transmission control protocol segmentation for a high performance network interface card | |
US10015117B2 (en) | Header replication in accelerated TCP (transport control protocol) stack processing | |
US6611883B1 (en) | Method and apparatus for implementing PCI DMA speculative prefetching in a message passing queue oriented bus system | |
CN111930676B (en) | Method, device, system and storage medium for communication among multiple processors | |
US6704831B1 (en) | Method and apparatus for converting address information between PCI bus protocol and a message-passing queue-oriented bus protocol | |
US6567859B1 (en) | Device for translating medium access control dependent descriptors for a high performance network | |
US7561567B1 (en) | Protocol to implement token ID mechanism for network data transfer | |
US7142540B2 (en) | Method and apparatus for zero-copy receive buffer management | |
US6016513A (en) | Method of preventing packet loss during transfers of data packets between a network interface card and an operating system of a computer | |
US7136355B2 (en) | Transmission components for processing VLAN tag and priority packets supported by using single chip's buffer structure | |
US20030051076A1 (en) | Methods and system for pre-fetching descriptors | |
CN101409675A (en) | Network packet payload compression | |
JPH09325947A (en) | Method and device for atomically transferring command and data information to device | |
US20090089475A1 (en) | Low latency interface between device driver and network interface card | |
US7269666B1 (en) | Memory utilization in a network interface | |
US8798085B2 (en) | Techniques to process network protocol units | |
US6266732B1 (en) | Interrupt events chaining | |
JP2006325054A (en) | TCP / IP reception processing circuit and semiconductor integrated circuit having the same | |
US20040024833A1 (en) | Key reuse for RDMA virtual address space | |
US5948079A (en) | System for non-sequential transfer of data packet portions with respective portion descriptions from a computer network peripheral device to host memory | |
US9288163B2 (en) | Low-latency packet receive method for networking devices | |
JP2003050788A (en) | Apparatus and method for distribution of signal from high level data link controller to multiple digital signal processor core | |
US7376763B2 (en) | Method for transferring data from a memory subsystem to a network adapter by extending data lengths to improve the memory subsystem and PCI bus efficiency | |
US7010579B1 (en) | Direct data routing system | |
US6766358B1 (en) | Exchanging messages between computer systems communicatively coupled in a computer system network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: 3COM CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:YANG, LI-JAU (STEVEN);TRABER, RICH;REEL/FRAME:009933/0091 Effective date: 19990426 |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
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 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
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 |
|
REMI | Maintenance fee reminder mailed | ||
LAPS | Lapse for failure to pay maintenance fees | ||
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20150520 |