This technology relates to a system and method for pacing network traffic between network devices.
It is very common for a modern server to transmit large blocks of data in one burst to a single destination where the network path to the destination has much lower bandwidth than the really large bandwidth of the server's path within the data center and the first few hops along that path. Often these bursts are in response to a request for data, and the data is read from a storage medium (e.g., a disk) in a large block to help amortize the cost of the read operation. The large chunk of data is then dumped by the server's OS into the network at full speed, adding latency for other traffic following some portion of the same path through the network. This latency is unnecessary since other traffic could easily have been interleaved with the packets of the burst if the packets of the burst were spaced in time to match the true bandwidth of the full path to the destination. Further, such bursts can result in loss of some of the burst data due to overruns in of the buffering in the network path to the destination. Such losses necessitate retransmission of some of the large chunk of data—effectively reducing the gains that were hoped to be achieved by the batching of the read operation into a large chunk and reducing the overall throughput of the server. If the packets in these bursts were, instead, spread out in time at a pace matching the full network path data rate, both of these problems are easily solved
What is needed is a system and method which overcomes these disadvantages.
In an aspect, a method for pacing data packets from one or more sessions comprises selecting, at a software component of a network traffic management device, a first bucket having a first predetermined transmit time. The method comprises populating one or more selected data packet descriptors associated with one or more corresponding data packets in the first bucket. The method comprises releasing the first bucket to a hardware component of the network traffic management device, wherein the hardware component processes the one or more data packet descriptors of the first bucket for the first predetermined transmit time.
In an aspect, a processor readable medium having stored thereon instructions for pacing data packets from one or more sessions, comprising machine executable code which when executed by at least one processor and/or network interface a network traffic management device to perform a method comprising selecting a first bucket having a first predetermined transmit time; populating one or more selected data packet descriptors associated with one or more corresponding data packets in the first bucket; releasing the first bucket to a hardware component of the network traffic management device, wherein the hardware component processes the one or more data packet descriptors of the first bucket for the first predetermined transmit time.
In an aspect, a network traffic management device comprises a memory containing non-transitory machine readable medium comprising machine executable code having stored thereon instructions for pacing data packets from one or more sessions. A network interface configured to communicate with one or more servers over a network. A processor coupled to the network interface and the memory, the processor configured to execute the code which causes the processor to perform, with the network interface, a method comprising: selecting a first bucket having a first predetermined transmit time; populating one or more selected data packet descriptors associated with one or more corresponding data packets in the first bucket; releasing the first bucket to a hardware component of the network traffic management device, wherein the hardware component processes the one or more data packet descriptors of the first bucket for the first predetermined transmit time.
In one or more of the above aspects, the method performs comprises selecting, at the software component, a second bucket having a second predetermined transmit time that is the same as the first transmit time of the first bucket; populating one or more selected data packet descriptors associated with one or more corresponding data packets in the second bucket; releasing the second bucket to the hardware component of the network traffic management device, wherein the hardware component processes the one or more data packet descriptors of the second bucket for the second predetermined transmit time quanta.
While these examples are susceptible of embodiment in many different forms, there is shown in the drawings and will herein be described in detail preferred examples with the understanding that the present disclosure is to be considered as an exemplification and is not intended to limit the broad aspect to the embodiments illustrated.
Client devices 106 comprise network computing devices capable of connecting to other network computing devices, such as network traffic management device 110 and/or servers 102. Such connections are performed over wired and/or wireless networks, such as network 108, to send and receive data, such as for Web-based requests, receiving server responses to requests and/or performing other tasks. Non-limiting and non-exhausting examples of such client devices 106 include personal computers (e.g., desktops, laptops), tablets, smart televisions, video game devices, mobile and/or smart phones and the like. In an example, client devices 106 can run one or more Web browsers that provide an interface for operators, such as human users, to interact with for making requests for resources to different web server-based applications and/or Web pages via the network 108, although other server resources may be requested by client devices.
The servers 102 comprise one or more server network devices or machines capable of operating one or more Web-based and/or non Web-based applications that may be accessed by other network devices (e.g. client devices, network traffic management devices) in the environment 100. The servers 102 can provide web objects and other data representing requested resources, such as particular Web page(s), image(s) of physical objects, JavaScript and any other objects, that are responsive to the client devices' requests. It should be noted that the servers 102 may perform other tasks and provide other types of resources. It should be noted that while only two servers 102 are shown in the environment 100 depicted in
Network 108 comprises a publicly accessible network, such as the Internet, which is connected to the servers 102, client devices 106, and network traffic management devices 110. However, it is contemplated that the network 108 may comprise other types of private and public networks that include other devices. Communications, such as requests from clients 106 and responses from servers 102, take place over the network 108 according to standard network protocols, such as the HTTP, UDP and/or TCP/IP protocols, as well as other protocols. As per TCP/IP protocols, requests from the requesting client devices 106 may be sent as one or more streams of data packets over network 108 to the network traffic management device 110 and/or the servers 102. Such protocols can be utilized by the client devices 106, network traffic management device 110 and the servers 102 to establish connections, send and receive data for existing connections, and the like.
Further, it should be appreciated that network 108 may include local area networks (LANs), wide area networks (WANs), direct connections and any combination thereof, as well as other types and numbers of network types. On an interconnected set of LANs or other networks, including those based on differing architectures and protocols. Network devices such as client devices, 106, servers 102, network traffic management devices 110, routers, switches, hubs, gateways, bridges, cell towers and other intermediate network devices may act within and between LANs and other networks to enable messages and other data to be sent between network devices. Also, communication links within and between LANs and other networks typically include twisted wire pair (e.g., Ethernet), coaxial cable, analog telephone lines, full or fractional dedicated digital lines including T1, T2, T3, and T4, Integrated Services Digital Networks (ISDNs), Digital Subscriber Lines (DSLs), wireless links including satellite links and other communications links known to those skilled in the relevant arts. Thus, the network 108 is configured to handle any communication method by which data may travel between network devices.
LAN 104 comprises a private local area network that allows communications between the one or more network traffic management devices 110 and one or more servers 102 in the secured network. It is contemplated, however, that the LAN 104 may comprise other types of private and public networks with other devices. Networks, including local area networks, besides being understood by those skilled in the relevant arts, have already been generally described above in connection with network 108 and thus will not be described further.
As shown in the example environment 100 depicted in
Device processor 200 of the network traffic management device 110 comprises one or more microprocessors configured to execute computer/machine readable and executable instructions stored in the device memory 206. Such instructions, when executed by one or more processors 200, implement general and specific functions of the network traffic management device 110, including the inventive process described in more detail below. It is understood that the processor 200 may comprise other types and/or combinations of processors, such as digital signal processors, micro-controllers, application specific integrated circuits (“ASICs”), programmable logic devices (“PLDs”), field programmable logic devices (“FPLDs”), field programmable gate arrays (“FPGAs”), and the like. The processor 200 is programmed or configured according to the teachings as described and illustrated herein.
Device I/O interfaces 202 comprise one or more user input and output device interface mechanisms. The interface may include a computer keyboard, mouse, display device, and the corresponding physical ports and underlying supporting hardware and software to enable the network traffic management device 110 to communicate with other network devices in the environment 100. Such communications may include accepting user data input and providing user output, although other types and numbers of user input and output devices may be used. Additionally or alternatively, as will be described in connection with network interface 204 below, the network traffic management device 110 may communicate with the outside environment for certain types of operations (e.g. smart load balancing) via one or more network management ports.
Network interface 204 comprises one or more mechanisms that enable the network traffic management device 110 to engage in network communications over the LAN 104 and the network 108 using one or more of a number of protocols, such as TCP/IP, HTTP, UDP, RADIUS and DNS. However, it is contemplated that the network interface 204 may be constructed for use with other communication protocols and types of networks. Network interface 204 is sometimes referred to as a transceiver, transceiving device, or network interface card (NIC), which transmits and receives network data packets over one or more networks, such as the LAN 104 and the network 108. In an example, where the network traffic management device 110 includes more than one device processor 200 (or a processor 200 has more than one core), each processor 200 (and/or core) may use the same single network interface 204 or a plurality of network interfaces 204. Further, the network interface 204 may include one or more physical ports, such as Ethernet ports, to couple the network traffic management device 110 with other network devices, such as servers 102. Moreover, the interface 204 may include certain physical ports dedicated to receiving and/or transmitting certain types of network data, such as device management related data for configuring the network traffic management device 110 or client request/server response related data.
Bus 208 may comprise one or more internal device component communication buses, links, bridges and supporting components, such as bus controllers and/or arbiters. The bus 208 enables the various components of the network traffic management device 110, such as the processor 200, device I/O interfaces 202, network interface 204, and device memory 206, to communicate with one another. However, it is contemplated that the bus 208 may enable one or more components of the network traffic management device 110 to communicate with one or more components in other network devices as well. Example buses include HyperTransport, PCI, PCI Express, InfiniBand, USB, Firewire, Serial ATA (SATA), SCSI, IDE and AGP buses. However, it is contemplated that other types and numbers of buses may be used, whereby the particular types and arrangement of buses will depend on the particular configuration of the network traffic management device 110.
Device memory 206 comprises computer readable media, namely computer readable or processor readable storage media, which are examples of machine-readable storage media. Computer readable storage/machine-readable storage media may include volatile, nonvolatile, removable, and non-removable media implemented in any method or technology for storage of information. Examples of computer readable storage media include RAM, BIOS, ROM, EEPROM, flash/firmware memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the information, which can be accessed by a computing or specially programmed network device, such as the network traffic management device 110.
Such storage media includes computer readable/processor-executable instructions, data structures, program modules, or other data, which may be obtained and/or executed by one or more processors, such as device processor 200. Such instructions, when executed, allow or cause the processor 200 to perform actions, including performing the inventive processes described below. The memory 206 may contain other instructions relating to the implementation and operation of an operating system for controlling the general operation and other tasks performed by the network traffic management device 110.
As illustrated in
By way of example only, return DMA descriptor rings and send DMA descriptor rings 218 can be physically in the same hardware memory blocks functioning as return and send DMA rings, respectively, at different times. Alternatively, separate and distinct memory blocks within host memory 212 DMA memory resources 214 may be reserved for each return DMA descriptor rings and send DMA descriptor rings 218.
Host system 111 places the send descriptor on the send DMA descriptor rings 218 in host system memory 212. The host processor 200 determines the QoS of the network packet to be transferred to the network 108 and moves the network packet to the appropriate DMA packet buffer 216 and places the descriptor on the appropriate descriptor rings 1-4 in send DMA descriptor rings 218. The descriptor ring in send DMA descriptor rings 218 is chosen by the host system 111 which selects the DMA channel, its associated peripheral, and the QoS level within the DMA channel. Send descriptors created by host system 111 in send DMA descriptor rings 218 can be of variable types, where each descriptor type can have a different format and size. The send DMA descriptor rings 218 are capable of holding descriptors of variable type.
The host processor 200 writes one or more mailbox registers 230 of the network interface controller 204 to notify the network interface controller 204 that the packet is ready. In performing this notification, the host processor 200 performs a write operation to a memory mapped network interface controller register (mailbox register 230). The host processor 200 can report the addition of multiple descriptors onto the send DMA ring in a single update, or alternatively, in multiple updates.
The appropriate packet DMA engine within DMA engine 224 is notified that the packet is ready. The packet DMA engine 224 can be selected from available DMA channels, or if a specific application has a dedicated DMA channel, the associated packet DMA engine 224 for that channel is used. The DMA engine 224 retrieves the DMA descriptor from the send DMA descriptor rings 218. When multiple descriptors are outstanding in the send DMA descriptor rings 218, the DMA Engine 224 may retrieve more than one descriptor. Retrieving multiple descriptors at a time maximizes bus bandwidth and hardware efficiency. The DMA engine 224 is capable of receiving and processing send descriptors of variable type, format, and size.
As outlined above, the packet DMA engine 224 monitors the progress of the host DMA operations via a set of mailbox registers 230. Each packet DMA engine 224 supports its own set of mailbox registers 230. The mailbox registers 230 reside in a mapped address space of the network interface controller 204. When appropriate, the host processor 200 accesses the mailbox registers 230 by performing memory mapped read and write transactions to the appropriate target address. The mailbox registers 230 also contain ring status information for the Ring to QoS Mapper 228. In this send DMA example, the packet DMA engine 224 reads the send descriptor, performs the DMA operation defined by it, and reports to the host system 111 that the DMA operation is complete. During the DMA operation, data is received from one or more CPU Bus read transactions (e.g., HyperTransport or PCI Express read transactions).
DMA scheduler 226 chooses packets out of packet buffers 216 based upon the priority of the queued network data packets and schedules the transfer to the appropriate packet DMA engine 224. For clarity and brevity, only a single packet buffer, a single DMA scheduler, and DMA engine are shown in
The packet buffers 216 are selected based on the novel scheme (discussed below) using DMA scheduler 226. The DMA scheduler 226 selects which descriptor ring 1-4 out of return DMA descriptor rings (also referred to as return DMA rings, or send rings) within DMA memory resources 212 to service and the matching packet buffer 216 is accessed for a single packet. The scheduling process is then repeated for the next packet.
Each network packet retrieved from a packet buffer 216 is routed to the appropriate DMA channel controlled by the respective packet DMA engine such as the packet DMA engine 224. The DMA channel segments the network packet for delivery to host memory 212 via several, smaller, HyperTransport packets. These HyperTransport packets are interleaved with HyperTransport packets from the other DMA channels in the network interface controller 204.
Ring to QoS Mapper 228 examines the assigned send DMA ring in send DMA descriptor rings 218 and receives packet data and packet control information from the packet DMA engine 224. Using the control information, the Ring to QoS Mapper 228 stamps the appropriate QoS onto the network data packet, thereby allowing host system 111 to send the network data packet back to the network 108. For example, using the control information, the Ring to QoS Mapper 228 can create and prepend a HiGig header to the packet data.
An egress DMA routing interface 232 arbitrates access to the network for DMA send packets. When a Ring to QoS Mapper 228 has a network packet ready to send, the egress DMA routing interface 232 arbitrates its access to the Ethernet port 236 and routes the packet to the correct interface if there is more than one present in the network interface controller 204. The egress DMA routing interface 232 behaves like a crossbar switch and monitors its attached interfaces for available packets. When a packet becomes available, the egress DMA routing interface 232 reads the packet from the selected ring to QoS mapper 228 and writes it to the destination interface. The egress DMA routing interface 232 moves complete packets to Ethernet MACs 234. When multiple sources are contending for egress DMA routing interface 232, the egress DMA routing interface 232 uses a weighted arbitration scheme as discussed in more detail below.
The network interface controller 204 provides DMA services to a host complex such as the host system 111 on behalf of its attached I/O devices such as the Ethernet port 236. DMA operations involve the movement of data between the host memory 212 and the network interface controller 204. The network interface controller 204 creates and manages HyperTransport or other types of CPU Bus read/write transactions targeting host memory 22. Data transfer sizes supported by DMA channels maintained by various components of application delivery controller 110 are much larger than the maximum HyperTransport or CPU bus transaction size. The network interface controller 204 segments single DMA operations into multiple smaller CPU Bus or HyperTransport transactions. Additionally, the network interface controller 204 creates additional CPU bus or HyperTransport transactions to support the transfer of data structures between the network interface controller 204 and host memory 212.
DMA channels 1-n each have unique independent resources allotted to them, for example, a unique PCI bus identity including a configuration space and base address registers, an independent view of host system memory 212, a unique set of DMA descriptor ring buffers, a unique set of packet buffers 216, unique DMA request/completion signaling (through interrupts or polled memory structures), and other resources. Each of DMA channels 1-n is unique and independent thereby permitting management by separate unique drivers 1-n.
The network interface controller 204 classifies received packets to determine destination application selected from applications App(1)-App(n) and thereby selects the matching DMA channel to deliver the packet to the corresponding application. By way of example only, packet classification includes reading packet header fields thereby permitting application identification. Further by way of example only, packet classification includes hash calculation for distribution of packets across multiple instances of the same application, and/or reading a cookie stored, for example, in the network interface controller 204 associated with the application and the received network packet.
In general, the present disclosure utilizes hardware and software in the network traffic management device when pacing network traffic being sent to another network device (e.g. client, server). The purpose is for the network traffic management device to pace delivery of session data to the client to match the rate at which the client consumes the data, which adds value for mobile clients and networks. The network traffic management device utilizes a transmit time calendar having a plurality of quanta of transmit times. For example, one quanta may be 1 microsecond, although other time durations are contemplated.
In an aspect, one or more buckets 300 can be skipped for distribution, by the software component, to increase intra-packet spacing. One way for determining how many buckets to skip before placing a data packet descriptor in a bucket 300 can be based on the type or class of application in which the data is delivered (e.g. video streaming). For example, video streaming applications would benefit from a constant rate of data delivery. Another way of determining (based on speed) would be using TCP congestion control algorithms which calculate how many packets are to be sent over time. The software does not have to hunt for holes where packet descriptors can be inserted. Instead, the software component need only to drop packet descriptors into the one or more buckets 300.
Once a bucket 300 is populated by the software component, the software component releases the bucket to the hardware component, such as the network interface 204. In particular, the bucket contents are written into the network interface's 204 DMA ring 218 en-mass. In an aspect, the hardware component can determine whether the size of a particular data packet in a bucket is of a threshold size such that the data packet can be processed within the allotted time quanta.
A gross timer is applied by the hardware component in writing the packets into the DMA ring 218, wherein the poll loop time of the processor 200 of the network traffic management device 110 is used as the gross timer. The sum of released bucket time quanta's must excel poll loop time.
The fence 304 marking at the end of a particular bucket 300 serves as a timing boundary at the end of the bucket to allow the hardware component to do precise bucket to bucket timing.
In an aspect, the pacing send ring 500 is given higher priority in terms of being sent to the ring arbitrator 506. Thus, the bulk traffic in the bulk send ringer 502 advances to the arbitrator 506 when the paced traffic (from the pacing send ring 500) is blocked or is absent. A pacing timer 504 in coupled to the pacing send ring 500 and the arbitrator 506, wherein the pacing timer is reset at the start of a new bucket 300. The pacing timer 504 also blocks traffic at bucket boundaries until the bucket quanta time expires.
Once the application module 210 has populated the bucket with the last data packet, the application module 210 applies a fence which represents the last data packet for that bucket (Block 708). The application module 210 thereafter determines if the selected bucket is the last bucket in the time calendar (Block 710). If so, the application module 210 effectively wraps around the time calendar and selects the first bucket (Block 702). If not, the application module 210 selects the next bucket in the time calendar (Block 712), wherein the process proceeds back to Block 704.
If no additional allotted time is left, the network interface 204 selects the next bucket 812 and the process proceeds back to Block 804. Referring back to Block 808, if no bulk data is available for processing for a particular bucket, the network interface 204 does not write any data packets and allows the remaining time for the bucket quanta to expire (Block 814). The process then proceeds to Block 812.
Having thus described the basic concepts, it will be rather apparent to those skilled in the art that the foregoing detailed disclosure is intended to be presented by way of example only, and is not limiting. Various alterations, improvements, and modifications will occur and are intended to those skilled in the art, though not expressly stated herein. These alterations, improvements, and modifications are intended to be suggested hereby, and are within the spirit and scope of the examples. Additionally, the recited order of processing elements or sequences, or the use of numbers, letters, or other designations therefore, is not intended to limit the claimed system and/or processes to any order except as may be specified in the claims. Accordingly, the system and method is limited only by the following claims and equivalents thereto.
Number | Name | Date | Kind |
---|---|---|---|
4914650 | Sriram | Apr 1990 | A |
5388237 | Sodos | Feb 1995 | A |
5477541 | White et al. | Dec 1995 | A |
5699361 | Ding et al. | Dec 1997 | A |
5761534 | Lundberg et al. | Jun 1998 | A |
5828835 | Isfeld et al. | Oct 1998 | A |
5941988 | Bhagwat et al. | Aug 1999 | A |
6026090 | Benson et al. | Feb 2000 | A |
6026443 | Oskouy et al. | Feb 2000 | A |
6070219 | McAlpine et al. | May 2000 | A |
6115802 | Tock et al. | Sep 2000 | A |
6347337 | Shah et al. | Feb 2002 | B1 |
6388989 | Malhotra | May 2002 | B1 |
6529508 | Li et al. | Mar 2003 | B1 |
6574220 | Petty | Jun 2003 | B1 |
6700871 | Harper et al. | Mar 2004 | B1 |
6748457 | Fallon et al. | Jun 2004 | B2 |
6781990 | Puri et al. | Aug 2004 | B1 |
6785236 | Lo et al. | Aug 2004 | B1 |
6820133 | Grove et al. | Nov 2004 | B1 |
6934776 | Connor et al. | Aug 2005 | B2 |
7046628 | Luhmann et al. | May 2006 | B2 |
7065630 | Ledebohm et al. | Jun 2006 | B1 |
7107348 | Shimada et al. | Sep 2006 | B2 |
7124196 | Hooper | Oct 2006 | B2 |
7142540 | Hendel et al. | Nov 2006 | B2 |
7164678 | Connor | Jan 2007 | B2 |
7236491 | Tsao et al. | Jun 2007 | B2 |
7281030 | Davis | Oct 2007 | B1 |
7324525 | Fuhs et al. | Jan 2008 | B2 |
7327674 | Eberle et al. | Feb 2008 | B2 |
7349405 | Deforche | Mar 2008 | B2 |
7355977 | Li | Apr 2008 | B1 |
7376772 | Fallon | May 2008 | B2 |
7403542 | Thompson | Jul 2008 | B1 |
7420931 | Nanda et al. | Sep 2008 | B2 |
7475122 | Azpitarte | Jan 2009 | B2 |
7478186 | Onufryk et al. | Jan 2009 | B1 |
7496695 | Go et al. | Feb 2009 | B2 |
7500028 | Yamagishi | Mar 2009 | B2 |
7512721 | Olson | Mar 2009 | B1 |
7533197 | Leonard et al. | May 2009 | B2 |
7558910 | Alverson et al. | Jul 2009 | B2 |
7571299 | Loeb | Aug 2009 | B2 |
7647416 | Chiang et al. | Jan 2010 | B2 |
7649882 | Stiliadis | Jan 2010 | B2 |
7657659 | Lambeth et al. | Feb 2010 | B1 |
7668727 | Mitchell et al. | Feb 2010 | B2 |
7668851 | Triplett | Feb 2010 | B2 |
7729239 | Aronov et al. | Jun 2010 | B1 |
7734809 | Joshi et al. | Jun 2010 | B2 |
7735099 | Micalizzi, Jr. | Jun 2010 | B1 |
7742412 | Medina | Jun 2010 | B1 |
7784093 | Deng et al. | Aug 2010 | B2 |
7826487 | Mukerji et al. | Nov 2010 | B1 |
7877524 | Annem et al. | Jan 2011 | B1 |
7916728 | Mimms | Mar 2011 | B1 |
7929433 | Husak et al. | Apr 2011 | B2 |
7975025 | Szabo et al. | Jul 2011 | B1 |
8006016 | Muller et al. | Aug 2011 | B2 |
8103809 | Michels et al. | Jan 2012 | B1 |
8112491 | Michels et al. | Feb 2012 | B1 |
8112594 | Giacomoni et al. | Feb 2012 | B2 |
8279865 | Giacomoni et al. | Oct 2012 | B2 |
8306036 | Bollay et al. | Nov 2012 | B1 |
8346993 | Michels et al. | Jan 2013 | B2 |
8447884 | Baumann | May 2013 | B1 |
8880632 | Michels et al. | Nov 2014 | B1 |
8880696 | Michels et al. | Nov 2014 | B1 |
20010038629 | Shinohara | Nov 2001 | A1 |
20020156927 | Boucher et al. | Oct 2002 | A1 |
20030067930 | Salapura et al. | Apr 2003 | A1 |
20030204636 | Greenblat et al. | Oct 2003 | A1 |
20040032830 | Bly et al. | Feb 2004 | A1 |
20040062245 | Sharp et al. | Apr 2004 | A1 |
20040202161 | Stachura et al. | Oct 2004 | A1 |
20040249881 | Jha et al. | Dec 2004 | A1 |
20040249948 | Sethi et al. | Dec 2004 | A1 |
20040267897 | Hill et al. | Dec 2004 | A1 |
20050007991 | Ton et al. | Jan 2005 | A1 |
20050022623 | Reiche et al. | Feb 2005 | A1 |
20050083952 | Swain | Apr 2005 | A1 |
20050091390 | Helmer et al. | Apr 2005 | A1 |
20050114559 | Miller | May 2005 | A1 |
20050141427 | Bartky | Jun 2005 | A1 |
20050175014 | Patrick | Aug 2005 | A1 |
20050213570 | Stacy et al. | Sep 2005 | A1 |
20050226234 | Sano et al. | Oct 2005 | A1 |
20060007928 | Sangillo | Jan 2006 | A1 |
20060104303 | Makineni et al. | May 2006 | A1 |
20060221832 | Muller et al. | Oct 2006 | A1 |
20060221835 | Sweeney | Oct 2006 | A1 |
20060224820 | Cho et al. | Oct 2006 | A1 |
20060235996 | Wolde et al. | Oct 2006 | A1 |
20060288128 | Moskalev et al. | Dec 2006 | A1 |
20070162619 | Aloni et al. | Jul 2007 | A1 |
20080126509 | Subramanian et al. | May 2008 | A1 |
20080184248 | Barua et al. | Jul 2008 | A1 |
20080201772 | Mondaeev et al. | Aug 2008 | A1 |
20080219279 | Chew | Sep 2008 | A1 |
20090003204 | Okholm et al. | Jan 2009 | A1 |
20090016217 | Kashyap | Jan 2009 | A1 |
20090089619 | Huang et al. | Apr 2009 | A1 |
20090154459 | Husak et al. | Jun 2009 | A1 |
20090222598 | Hayden | Sep 2009 | A1 |
20090248911 | Conroy et al. | Oct 2009 | A1 |
20090279559 | Wong et al. | Nov 2009 | A1 |
20100082849 | Millet et al. | Apr 2010 | A1 |
20100085875 | Solomon et al. | Apr 2010 | A1 |
20100094945 | Chan et al. | Apr 2010 | A1 |
20110228781 | Izenberg et al. | Sep 2011 | A1 |
20130250777 | Ziegler | Sep 2013 | A1 |
Number | Date | Country |
---|---|---|
1813084 | Aug 2007 | EP |
WO 2006055494 | May 2006 | WO |
Entry |
---|
Cavium Networks, “Cavium Networks Product Selector Guide—Single & Multi-Core MIPS Processors, Security Processors and Accelerator Boards,” 2008, pp. 1-44, Mountain View, CA, US. |
“Chapter 15, Memory Mapping and DMA,” Memory Management in Linux, ch15.13676, accessed on Jan. 25, 2005, pp. 412-463. |
Comtech AHA Corporation, “Comtech AHA Announces 3.0 Gbps GZIP Compression/Decompression Accelerator AHA362-PCIX offers high-speed GZIP compression and decompression,” www.aha.com, Apr. 20, 2005, pp. 1-2, Moscow, ID, USA. |
Comtech AHA Corporation, “Comtech AHA Announces GZIP Compression and Decompression IC Offers the highest speed and compression ratio performance in hardware on the market,” www.aha.com, Jun. 26, 2007, pp. 1-2, Moscow, ID, USA. |
EventHelix, “DMA and Interrupt Handling,” <http://www.eventhelix.com/RealtimeMantra/FaultHandling/dma—interrupt—handling.htm>, Jan. 29, 2010, pp. 1-4, EventHelix.com. |
Alteon Websystems Inc., “Gigabit Ethernet/PCI Network Interface Card; Host/NIC Software Interface Definition,” Jul. 1999, pp. 1-80, Revision 12.4.13, P/N 020001, San Jose, California. |
Harvey et al., “DMA Fundamentals on Various PC Platforms,” Application Note 011, Apr. 1999, pp. 1-20, National Instruments Corporation. |
Mangino, John, “Using DMA with High Performance Peripherals to Maximize System Performance,” WW TMS470 Catalog Applications, SPNA105 Jan. 2007, pp. 1-23. |
Mogul, Jeffrey C., “The Case for Persistent-Connection HTTP,” SIGCOMM '95, Digital Equipment Corporation Western Research Laboratory, 1995, pp. 1-15, Cambridge, Maine. |
Cavium Networks, “NITROX™ XL Security Acceleration Modules PCI 3V or 3V/5V-Universal Boards for SSL and IPSec,” at http://www.Caviumnetworks.com, 2002, pp. 1, Mountain View, CA USA. |
Cavium Networks, “PCI, PCI-X,” at (http://www.cavium.com/acceleration—boards—PCI—PCI-X.htm (Downloaded Oct. 2008), Cavium Networks—Products > Acceleration Boards > PCI, PCI-X). |
“Plan 9 kernel history: overview / file list / diff list,” <http://switch.com/cgi-bin/plan9history.cgi?f=2001/0126/pc/etherga620.com>, accessed Oct. 22, 2007, pp. 1-16. |
Rabinovich et al., “DHTTP: An Efficient and Cache-Friendly Transfer Protocol for the Web,” IEEE/ACM Transactions on Networking, Dec. 2004, pp. 1007-1020, vol. 12, No. 6. |
Salchow, Jr., KJ, “Clustered Multiprocessing: Changing the Rules of the Performance Game,” F5 White Paper, Jan. 2008, pp. 1-11, F5 Networks, Inc. |
Stevens, W., “TCP Slow Start, Congestion Avoidance, Fast Retransmit, and Fast Recovery Algorithms,” Network Working Group, RFC 2001, Jan. 1997, pp. 1-6. |
EventHelix, “TCP—Transmission Control Protocol (TCP Fast Retransmit and Recovery),” Mar. 28, 2002, pp. 1-5, EventHelix.com. |
Wadge, Wallace, “Achieving Gigabit Performance on Programmable Ethernet Network Interface Cards,” May 29, 2001, pp. 1-9. |
Welch, Von, “A User's Guide to TCP Windows,” http://www.vonwelch.com/report/tcp—windows, updated 1996, last accessed Jan. 29, 2010, pp. 1-5. |
Wikipedia, “Direct memory access,” <http://en.wikipedia.org/wiki/Direct—memory—access>, accessed Jan. 29, 2010, pp. 1-6. |