1. Field of the Invention
This invention relates to a network interface and a protocol for use in passing data over a network.
2. Description of the Related Art
When data is to be transferred between two devices over a data channel, each of the devices must have a suitable network interface to allow it to communicate across the channel. The devices and their network interfaces use a protocol to form the data that is transmitted over the channel, so that it can be decoded at the receiver. The data channel may be considered to be or to form part of a network, and additional devices may be connected to the network.
The Ethernet system is used for many networking applications. Gigabit Ethernet is a high-speed version of the Ethernet protocol, which is especially suitable for links that require a large amount of bandwidth, such as links between servers or between data processors in the same or different enclosures. Devices that are to communicate over the Ethernet system are equipped with network interfaces that are capable of supporting the physical and logical requirements of the Ethernet system. The physical hardware component of network interfaces are referred to as network interface cards (NICs), although they need not be in the form of cards: for instance they could be in the form of integrated circuits (ICs) and connectors fitted directly on to a motherboard.
Where data is to be transferred between cooperating processors in a network, it is common to implement a memory mapped system. In a memory mapped system communication between the applications is achieved by virtue of a portion of one application's virtual address space being mapped over the network onto another application. The “holes” in the address space which form the mapping are termed apertures.
The following steps would then be taken:
These steps are illustrated by
Hence the overall memory space mapping {Xo-Xn}→{Yo-Yn} is implemented by a series of sub-mappings as follows:
{Xo-Xn}
→
{PCIo, PCIn} (processor 1 address space)
→
{PCI′o, PCI′n} (PCI bus address space)
→
Network—mapping not shown
→
{PCI″o-PCI″n} (destination PCI bus address space)
→
{memo-memn} (destination memory address space)
→
{Yo-Yn} (destination application's virtual address space)
The step marked in
Two main reasons for the use of aperture mappings are:
a) System robustness. At each point that a mapping is made, hardware may check the validity of the address by matching against the valid aperture tables. This guards against malicious or malfunctioning devices. The amount of protection obtained is the ratio of the address space size (in bits) and the number of allocated apertures (total size in bits).
b) Conservation of address bits. Consider the case that a host within a 32 bit memory bus requires to access two 32 bit PCI buses. On the face of it, these would not be sufficient bits, since a minimum of 33 should be needed. However, the use of apertures enables a subset of both PCI buses to be accessed:
{PCIo-PCIn}→{PCI′o-PCI′n} and
{PCIp-PCIq}→{PCI″p-PCI″q}
Hardware address mappings and apertures are well understood in the area of virtual memory and I/O bus mapping (e.g. PCI). However there are difficulties in implementing mappings are required over a network. The main issues are:
Traditionally (e.g. for Ethernet or ATM switching), protocol stacks and network drivers have resided in the kernel. This has been done to enable
In the operation of a typical kernel stack system a hardware network interface card interfaces between a network and the kernel. In the kernel a device driver layer communicates directly with the NIC, and a protocol layer communicates with the system's application level.
The NIC stores pointers to buffers for incoming data supplied to the kernel and outgoing data to be applied to the network. These are termed the Rx data ring and the Tx data ring. The NIC updates a buffer pointer indicating the next data on the Rx buffer ring to be read by the kernel. The Tx data ring is supplied by direct memory access (DMA) and the NIC updates a buffer pointer indicating the outgoing data which has been transmitted. The NIC can signal to the kernel using interrupts.
Incoming data is picked off the Rx data ring by the kernel and is processed in turn. Out of band data is usually processed by the kernel itself. Data that is to go to an application-specific port is added by pointer to a buffer queue, specific to that port, which resides in the kernel's private address space.
The following steps occur during operation of the system for data reception:
For data transmission, the following steps occur.
Considering the data movement through the system, it should be noted that in the case of data reception the copy of data from the kernel buffer into the application buffer actually leaves the data residing in the processor's cache and so even though there appears to be a superfluous copy using this mechanism, the copy actually serves as a cache load operation. In the case of data transmission, it is likely that the data that is to be transmitted originated from the cache before being passed to the application for transmission, in which case the copy step is obviously inefficient. There are two reasons for the copy step:
Even if the copy step were omitted, on data reception, a cache load would take place when the application accessed the kernel buffer. Many people have recognized (see, e.g. U.S. Pat. No. 6,246,683) that these additional copies have been the cause of performance degradation. However, the solutions presented so far have all involved some excess data movement. It would be desirable to reduce this overhead. The inventors of the present invention have recognised that an overlooked problem is not the copying, but the user to kernel context switching and interrupt handling overheads. U.S. Pat. No. 6,246,683, for instance, does nothing to avoid these overheads.
During a context switch on a general purpose operating system many registers have to be saved and restored, and TLB entries and caches may be flushed. Modern processors are heavily optimized for sustained operation from caches and architectural constraints (such as the memory gap) are such that performance in the face of large numbers of context switches is massively degraded. Further discussion of this is given in “Piglet: A Low-intrusion Vertical Operating System”, S. J. Muir and J. M. Smith, Tech. rep. MS-CIS-00-04, Univ. of PA, January 2000. Hence it would be desirable to reduce context switches during both data transfer and connection management.
In order to remove the cost of context switches from data transmission and reception, VIA (Virtual Interface Architecture) was developed as an open standard from academic work in U-NET. Further information is available in the Virtual Interface Architecture Specification available from www.vidf.org. Some commercial implementations were made and it has since evolved into the Infiniband standard. The basic principle of this system is to enhance the network interface hardware to provide each application (network endpoint) with its own pair of DMA queues. Tx and Rx). The architecture comprises a kernel agent, a hardware NIC, and a user/application level interface. Each application at the user level is given control of a VI (Virtual Interface). This comprises two queues, one for transmission, one for reception (and an optional CQ completion queue). To transmit some data on a VI, the application must:
It is possible to also associate the VI with a completion queue. If this has been done the NIC will post an event to the completion queue to indicate that the buffer has been sent. Note that this is to enable one application to manage a number of VI queues by looking at the events on only one completion queue.
Either the VI send queue or completion queue may be enabled for interrupts.
To receive a buffer the application must create a descriptor which points to a free buffer and place the descriptor on the receive queue. It may also write to the “doorbell” to indicate that the receive queue is active.
When the NIC has a packet which is addressed to a particular VI receive queue, it reads the descriptor from the queue and determines the Rx buffer location. The NIC then DMAs the data to the receive buffer and indicates reception by:
There are problems with this queue based model:
Also, VIA does not avoid context switches for connection setup and has no error recovery capabilities. This is because it was intended to be used within a cluster where there are long-lived connections and few errors. If an error occurs, the VI connection is simply put into an error state (and usually has to be torn down and recreated).
VIA connection setup and tear down proceeds using the kernel agent in exactly the same manner as described for kernel stack processing. Hence operations such as Open, Connect, Accept etc all require context switches into the kernel. Thus in an environment where connections are short lived (e.g. WWW) or errors are frequent (e.g. Ethernet) the VIA interface performs badly.
VIA represents an evolution of the message passing interface, allowing user level access to hardware. There has also been another track of developments supporting a shared memory interface. Much of this research was targeted at building large single operating system NUMA (non-uniform memory architecture) machines (e.g. Stanford DASH) where a large supercomputer is built from a number of processors, each with local memory, and a high-speed interconnect. For such machines, coherency between the memory of each node was maintained by the hardware (interconnect). Coherency must generally ensure that a store/load operation on CPU1 will return the correct value even where there is an intervening store operation on CPU2. This is difficult to achieve when CPU1 is allowed to cache the contents of the initial store and would be expected to return the cached copy if an intervening write had not occurred. A large part of the IEEE standard for SCI (Scalable Coherent Interconnect) is taken up with ensuring coherency. The standard is available from www.vesa.org.
Because of the NUMA and coherency heritage of shared memory interconnects, the management and failure modes of the cluster were that of a single machine. For example implementations often assumed.
In a Memory Channel implementation of a cluster wide connection service, physically, all network writes are passed to all nodes in the cluster at the same time, so a receiving node just matches writes against its incoming window. This method does provide incoming protection (as we do), but address space management requires communication with the management node and is inefficient.
SCI is similar except that 12 bits of the address space is dedicated to a node identifier so that writes can be directed to a particular host. The remaining 48 bits is host implementation dependent. Most implementations simply allocate a single large segment of local memory and use the 48 bits as an offset.
No implementation has addressed ports or distributed connection management as part of its architecture.
Some implementations provide an event mechanism, where an event message can be sent from one host to another (or from network to host). When these are software programmable, distributed connection set up using ports is possible. However, since these mechanisms are designed for (rare) error handling (e.g. where a cable is unplugged), the event queue is designed to be a kernel only object—hence context switches are still required for connection management in the same manner as the VIA or kernel stack models.
According to one aspect of the present invention there is provided a communication interface for providing an interface between a data link and a data processor, the data processor being capable of supporting an operating system and a user application, the communication interface being arranged to: support a first queue of data received over the link and addressed to a logical data port associated with a user application; support a second queue of data received over the link and identified as being directed to the operating system; and analyse data received over the link and identified as being directed to the operating system or the data port to determine whether that data meets one or more predefined criteria, and if it does meet the criteria transmit an interrupt to the operating system.
Conveniently the user application has an address space and the first queue is located in that address space. Conveniently the operating system has an address space and the second queue is located in that address space. Most conveniently at least part of the address space of the user application is the same as at least part of the address space of the operating system. Preferably the all the address space of the user application lies within the address space of the operating system.
The communication interface is preferably arranged apply to the first queue data received over the link and identified as being directed to the data port. The communication interface is preferably arranged apply to the second queue data received over the link and identified as being directed to the operating system.
Preferably one of the predefined criteria is such that if the data received over the link matches one or more predetermined message forms then the communication interface will transmit an interrupt to the operating system.
Preferably the communication interface is arranged to, if the data meets one or more of the predefined criteria and one or more additional criteria transmit an interrupt to the operating system and transmit a message to the operating system indicating a port to which the data was addressed. Preferably the additional criteria are indicative of an error condition.
Preferably the communication interface is arranged to support a third queue of data received over the link and addressed to a logical data port associated with a user application, and is arranged to apply to the first queue data units received over the link and of a form having a fixed length and to apply to the third queue data units received over the link and of a form having a variable length. Preferably the data units of a fixed size include messages received over the link and interpreted by the communication interface as indicating an error status. Preferably the data units of a fixed size include or may include messages received over the link and interpreted by the communication interface as indicating a request for or acknowledgement of set-up of a connection. Preferably the data units of a fixed size include messages received over the link and interpreted by the communication interface as indicating a data delivery event.
Preferably the communication interface is arranged to analyse the content of each data unit received over the link and to determine in dependence on the content of that data unit which of the said queues to apply the data unit to.
Preferably the communication interface is configurable by the operating system to set the said criteria.
Preferably one or both of the communication interface and the operating system is responsive to a message of a predetermined type to return a message including information indicative of the status of the port.
According to the present invention there is also provided a communication system including a communication interface as set out above and the said data processor.
The data processor is preferably arranged to, when the processing of an application with which a data port is associated is suspended, set the criteria such that the communication interface will transmit an interrupt to the operating system on receiving data identified as being directed to that data port.
According to a second aspect of the present invention there is provided a communication interface for providing an interface between a data link and first data processing apparatus including a memory, the data interface being such that a region of the memory of the first data processing apparatus can be mapped on to memory of a second data processing apparatus connected to the communication interface by the link, the communication interface being arranged to, on establishing a mapping of a first range of one or more memory locations in the second data processing apparatus on to a second range of one or more memory locations in the first data processing apparatus, transmit to the second data processing apparatus data identifying the first range of memory locations.
Preferably the memory of the second data processing apparatus is virtual memory. Preferably the memory locations in the memory of the second data processing apparatus are virtual memory locations. Most preferably said one or more memory locations in the memory of the first data processing apparatus are one or more virtual memory locations and the communication interface is arranged to, on establishing the said mapping, establish a further mapping of the one or more virtual memory locations on to one or more physical memory locations in the memory of the first data processing apparatus
Preferably the communication interface is arranged to, on establishing a mapping of a first range of one or more memory locations in the memory of the second data processing apparatus on to a second range of one or more memory locations in the memory of the first data processing apparatus, allocate an identity to that mapping and transmit that identity to the second data processing apparatus
Preferably the communication interface is capable of communicating by means of data messages which specify a destination port to which data they contain is to be applied.
Preferably the communication interface is arranged to, on establishing a mapping of a first range of one or more memory locations in the memory of the second data processing apparatus on to a second range of one or more memory locations in the memory of the first data processing apparatus, determine check data and transmit the check data to the second data processing apparatus, and wherein the communication interface is arranged to reject subsequent communications over the mapping which do not indicate the check data. Preferably the check data is randomly generated by the communication interface. Conveniently, to indicate the check data a communication includes the check data.
Preferably the communication interface is arranged to modify the check data, according to a predefined scheme, during the operation of the mapping. Then it is subsequent communications over the mapping that do not indicate that modified data that the communication interface is preferably arranged to reject. Preferably the check data represents a number and the predefined scheme is to increment the number represented by the check data by a predefined amount each time a predefined number of communications over the mapping is accepted. The predefined amount is preferably but not necessarily one. The predefined number is preferably but not necessarily one.
Preferably the communication interface is arranged to reject subsequent communications over the mapping which indicate a request for accessing data outside the first range.
According to the present invention there is also provided a communication system including a communication interface as set out above and the said data processor.
The data processor is preferably capable of supporting an operating system and a user application. The system preferably comprises a data store which stores items of data defining operation parameters for communications over the data link to transmit data stored in the first range or receive data for storage in the first range.
The operating system may be arranged to permit a user application to access one or more items of data in the data store dependent on a level of trust granted to the application.
The check data is preferably stored as one of the items of data in the data store, the operating system is arranged to permit at least some user applications to have write access to that item of data, and the communication interface is arranged to, in order to determine the check data, read the content of that item of data and treat it as the check data.
Preferably items of data in the data store define the start and end points of the first range of memory locations in the memory of the first data processing apparatus and store the start and end points of the second range of memory locations in the memory of the second data processing apparatus. Preferably the operating system is arranged to permit applications having one or more levels of trust to have write access to the items of data in the data store that second, and store the start and end points of the second range of memory locations in the memory of the second data processing apparatus and to permit no applications to have write access to the items of data in the data store that define the start and end points of the first range of memory locations in the memory of the first data processing apparatus.
The present invention will now be described by way of example with reference to the accompanying drawings.
Preferably the communication interface is capable of supporting a plurality of mappings each of a respective first range of one or more virtual memory locations in the second data processing apparatus on to a respective second range of one or more memory locations in the first data processing apparatus, and for each such mapping a respective further mapping of the respective one or more virtual memory locations on to one or more physical memory locations in the memory of the first data processing apparatus.
Preferably the communication interface includes a translation interface for translating accesses to or from each of the said ranges of one or more virtual memory locations into accesses to or from the respective one or more physical memory locations in the memory of the first data processing apparatus and for translating accesses to or from each of the one or more physical memory locations in the memory of the first data processing apparatus into accesses to or from the respective ranges of one or more virtual memory locations. Preferably the virtual memory locations are local bus addresses, for example PCI bus addresses. An access to a location is suitably a write access to that location. An access from a location is suitably a read access from that location.
Preferably the communication interface comprises a mapping memory arranged to store specifications of the said further mappings. The mapping memory preferably comprises a first mapping memory local to the translation interface, and a second mapping memory less local to the translation interface than the first mapping memory, and wherein the communication interface is arranged to store specifications of all of the further mappings in the second mapping memory, and to store specifications of only some of the further mappings in the first mapping memory. Preferably the first mapping memory is an associative memory.
Preferably the translation interface is arranged to, in order to translate between an access to or from one of the said ranges of one or more virtual memory locations and an access to or from the respective one or more physical memory locations in the memory of the first data processing apparatus, preferentially access the first mapping memory to implement the translation, and if the specification of the mapping of the range of virtual memory locations the subject of the access is not stored in the first mapping memory to access the second mapping memory to implement the translation.
Preferably the communication interface is arranged to store specifications of the most recently used further mappings in the first mapping memory. Preferably it is arranged to, if an attempt to access a specification from the first mapping memory is unsuccessful, replace a specification in the first mapping memory with the specification the attempt to access which was unsuccessful.
In the drawings:
The data transmission system described herein implements several significant features: (1) dynamic caching of aperture mappings between the NICs 31, 32; (2) a packet oriented setup and teardown arrangement for communication between the NICs; and (3) the use of certain bits that are herein termed “nonce bits” in the address space of one or both NICs.
Dynamic Caching of Aperture Entries
A small number of aperture mappings can be stored efficiently using a static table. To implement this, a number of bits (the map bits) of an address are caught by the address decode logic of an NIC and are used as an index into an array of memory which contains the bits that are used for reversing the mapping (the remap bits). For example, in a system of the type illustrated in
This method is scalable up to a few hundred or thousand entries depending on the implementation technology used (typically FPGA or ASIC) but is limited by the space available within the device that is used to hold the mapping table. A superior method of implementation is to store the mappings in a larger store (to which access is consequently slower) and to cache the most recently used mappings in an associative memory that can be accessed quickly. If a match for the bits that are to be substituted is found in the associative memory (by a hardware search operation) then the remap is made very quickly. If no match is found the hardware must perform a secondary lookup in the larger memory (in either a table or tree structure). Typically the associative memory will be implemented on the processing chip of the NIC, and the larger memory will be implemented off-chip, for example in DRAM. This is illustrated in
In practice, the mapping information must contain all the address information required to transmit a packet over a network. This is discussed in more detail below.
Packet Oriented Connection Setup and Tear Down Protocol
A protocol will now be described for establishing a connection between two applications' address spaces using apertures, where there are two administration domains (one belonging to each of the communicating hosts). The general arrangement is illustrated in
In this example mapping entries for devices in domain A can only be set by the operating system on host A. A further implementation in which an application A running on host A is allowed to set some (but not all) bits on an aperture mapping within domain A is described below.
The connection protocol to be described uses IP (Internet Protocol) datagrams to transfer packets from one host to another (just as for standard Ethernet networks). The datagrams are addressed as <host:port> where <host> is the network identifier of the destination host and <port> is an identifier for the application (NB each application may have a number of allocated parts corresponding to different network connections) within the host. It will be appreciated that the present protocol could be used over other transport protocols than IP.
In the present protocol the connection setup proceeds as follows, assuming host A wishes to make an active connection to a passive (accepting) host B on which an application B is running.
Dual Event Queues
In the present context a port will be considered to be an operating system specific entity which is bound to an application, has an address code, and can receive messages. This concept is illustrated in
The port exists within the operating system so that messages can be received and securely handled no matter what the state of the corresponding application. It is bound (tethered) to a particular application and has a message queue attached. In traditional protocol stacks, e.g. in-kernel TCP/IP all data is normally enqueued on the port message queue before it is read by the application. (This overhead can be avoided by the memory mapped data transfer mechanism described herein).
In the scheme to be described herein, only out of band data is enqueued on the port message queue.
A further enhancement is to use a dual queue, associated with a port. This can help to minimise the requirements to make system calls when reading out of band messages. This is particularly useful where there are many messages e.g. high connection rate as for a web server, or a high error rate which may be expected for Ethernet.
At the beginning of its operations, the operating system creates a queue to handle out of band messages. This queue may be written to by the NIC and may have an interrupt associated with it. When an application binds to a port, the operating system creates the port and associates it with the application. It also creates a queue to handle out of band messages for that port only. That out of band message queue for the port is then memory mapped into the application's virtual address space such that it may de-queue events without requiring a kernel context switch.
The event queues are registered with the NIC, and there is a control block on the NIC associated with each queue (and mapped into either or both the OS or application's address space(s)).
A queue with control blocks is illustrated in
If an interrupt is generated, then firstly the PCI interrupt line is asserted to ensure the computer's interrupt handler is executed, but also a second message is delivered into the operating system's queue. In general, this queue can handle many interrupt types, such as hardware failure, but in this case, the OS queue contains the following message [ODBDATA:PORT] indicating that out of band data has been delivered to the application queue belonging to [PORT]. The OS can examine the data in queue 59 and take appropriate action. The usual situation will be that the application is blocked or descheduled and the OS must wake it (mark as runnable to the scheduler).
This dual queue mechanism enables out of band data to be handled by the application without involving the OS—while the application is running. Where the application(s) is blocked, the second queue and interrupt enable the OS to determine which of potentially many application queues have had data delivered. The overall arrangement is illustrated in
The out of band (OOB) queue holds out of band data, which are:
If the queue is to contain variable sized data then the size of the data part of each message must be included at the start of the message.
When applications are to communicate in the present system over shared memory, a single work queue can be shared between two communicating endpoints using non-coherent shared memory. As data is written into the queue, write pointer (WRPTR) updates are also written by the transmitting application into the remote network-mapped memory to indicate the data valid for reading. As data is removed from the queue, read pointer (RDPR) updates are written by the receiving application back over the network to indicate free space in the queue.
These pointer updates are conservative and may lag the reading or writing of data by a short time, but means that a transmitter will not initiate a network transfer of data until buffer is available at the receiver, and the low latency of the pointer updates means that the amount of queue buffer space required to support a pair of communicating endpoints is small. The event mechanism described above can be used to allow applications to block on full/empty queues and to manage large numbers of queues via a multiplexed event stream, which is scalable in terms of CPU usage and response time.
Variable length data destined for an event queue would be delivered to a second queue. This has the advantage of simplifying the event generation mechanism in hardware. Thus the fixed size queue contains simple events and pointers (size) into the variable length queue
Enhanced Aperture Mappings and “Nonce Bits”
In this implementation, additional bits, termed “nonce bits” are provided in order to protect against malfunctioning or malicious hardware or software writing inadvertently to apertures. To illustrate this, the following network mapping will be discussed:
When performing the mapping to <host in-index> the NIC is able to create an outgoing packet which is addressed by <host: in-index>. This will be recognized by the NIC that receives the packet as being a packet intended for processing as an aperture packet, rather than as a packet intended to pass via a port to a corresponding application. Thus the packet is to be presented to the incoming aperture lookup hardware.
It should first be noted that under the scheme described above, the PCI address to which the data is sent encodes both the aperture mapping and an offset within the aperture. This is because the NIC can form the destination address as a function of the address to which the message on the PCI bus was formed. The address received by the NIC over the PCI bus can be considered to be formed of (say) 32 bits which include an aperture definition and a definition of an offset in that aperture. The offset bits are also encoded in the outgoing packet to enable the receiving NIC to write the data relative to the incoming aperture base. In the case of a data write the resulting network packet can be considered to comprise data together with a location definition comprising an offset, an in-index and an indication of the host to which it is addressed. At the receiving NIC at the host this will be considered as instructing writing of the data to the PCI address that corresponds to that aperture, offset by the received offset. In the case of a read request the analogous operation occurs. This feature enables an aperture to be utilized as a circular queue (as described previously) between the applications and avoids the requirement to create a new aperture for each new receive data buffer.
In this implementation the network packet also contains the nonce bits. These are programmed into the aperture mapping during connection setup and are intended to provide additional security, enabling apertures to be reused safely for many connections to different hosts.
The processing of the nonce bits for communications between hosts A and B is as follows:
Once the connection is set up to include the nonce bits all packets sent from A to B via outgoing apertureA will contain nonce B. When received the NICB will look up in-index B and compare the received nonce value with that programmed at B. If they differ, the packet is rejected. This is very useful if a malfunctioning application holds onto a stale connection: it may transmit a packet which has a valid [host:in-index] address, but would have old nonce bits, and so would be rejected.
Remembering that the user level application has a control block for the out of band queue, this control block can also be used to allow control of the apertures associated with the application, in such a way that connection setup and tear down may be performed entirely at user level.
Note that some parts of the aperture control block only are user programmable, others must only be programmed by the operating system.
For an untrusted application, kernel connection management would be performed. This means that out of band data would be processed only in the kernel, and no programmable bits would be made available to the application.
An example of an outgoing aperture table is shown in
An example of an incoming aperture table is shown in
A PCI write for an outgoing aperture is processed as shown in
For incoming packets, the reverse operation takes place. The incoming aperture is looked up and checked to be:
Any one or more of these checks may be implemented or omitted, depending on the level of security required.
This lookup returns a field of: (base+extent) for the aperture. The offset is checked against the extent to ensure out of aperture access is not made and a PCI write is formed and emitted on the receiver's PCI bus with the format
If the PCI bus is stalled, (say on DATAN) a new PCI transaction will be emitted
Similarly if consecutive CI data packets arrive they may be coalesced into larger PCI bursts simply by removing the redundant intermediate headers.
The applicant hereby discloses in isolation each individual feature described herein and any combination of two or more such features, to the extent that such features or combinations are capable of being carried out based on the present specification as a whole in the light of the common general knowledge of a person skilled in the art, irrespective of whether such features or combinations of features solve any problems disclosed herein, and without limitation to the scope of the claims. The applicant indicates that aspects of the present invention may consist of any such individual feature or combination of features. In view of the foregoing description it will be evident to a person skilled in the art that various modifications may be made within the scope of the invention.
Number | Date | Country | Kind |
---|---|---|---|
0221464.1 | Sep 2002 | GB | national |
This application is a continuation of pending U.S. application Ser. No. 10/661,765, filed Sep. 15, 2003, which claims priority to Great Britain patent application No. 0221464.1, filed Sep. 16, 2002, and are incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
4393443 | Lewis | Jul 1983 | A |
5272599 | Koenen | Dec 1993 | A |
5325532 | Crosswy et al. | Jun 1994 | A |
5946189 | Koenen et al. | Aug 1999 | A |
6018763 | Hughes et al. | Jan 2000 | A |
6067595 | Lindenstruth | May 2000 | A |
6098112 | Ishijima et al. | Aug 2000 | A |
6111894 | Bender et al. | Aug 2000 | A |
6160554 | Krause | Dec 2000 | A |
6246683 | Connery et al. | Jun 2001 | B1 |
6304945 | Koenen | Oct 2001 | B1 |
6314532 | Daudelin et al. | Nov 2001 | B1 |
6321310 | McCarthy et al. | Nov 2001 | B1 |
6349035 | Koenen | Feb 2002 | B1 |
6438130 | Kagan et al. | Aug 2002 | B1 |
6502203 | Barron et al. | Dec 2002 | B2 |
6530007 | Olarig et al. | Mar 2003 | B2 |
6667918 | Leader et al. | Dec 2003 | B2 |
6718392 | Krause | Apr 2004 | B1 |
6728743 | Shachar | Apr 2004 | B2 |
6735642 | Kagan et al. | May 2004 | B2 |
6768996 | Steffens et al. | Jul 2004 | B1 |
6799200 | Blackmore et al. | Sep 2004 | B1 |
6904534 | Koenen | Jun 2005 | B2 |
6950961 | Krause et al. | Sep 2005 | B2 |
6978331 | Kagan et al. | Dec 2005 | B1 |
7093158 | Barron et al. | Aug 2006 | B2 |
7099275 | Sarkinen et al. | Aug 2006 | B2 |
7103626 | Recio et al. | Sep 2006 | B1 |
7103744 | Garcia et al. | Sep 2006 | B2 |
7136397 | Sharma | Nov 2006 | B2 |
7143412 | Koenen | Nov 2006 | B2 |
7149227 | Stoler et al. | Dec 2006 | B2 |
7151744 | Sarkinen et al. | Dec 2006 | B2 |
7216225 | Haviv et al. | May 2007 | B2 |
7240350 | Eberhard et al. | Jul 2007 | B1 |
7245627 | Goldenberg et al. | Jul 2007 | B2 |
7254237 | Jacobson et al. | Aug 2007 | B1 |
7285996 | Fiedler | Oct 2007 | B2 |
7316017 | Jacobson et al. | Jan 2008 | B1 |
7346702 | Haviv | Mar 2008 | B2 |
7386619 | Jacobson et al. | Jun 2008 | B1 |
7403535 | Modi et al. | Jul 2008 | B2 |
7404190 | Krause et al. | Jul 2008 | B2 |
7451456 | Andjelic | Nov 2008 | B2 |
7502826 | Barron et al. | Mar 2009 | B2 |
7509355 | Hanes et al. | Mar 2009 | B2 |
7518164 | Smelloy et al. | Apr 2009 | B2 |
7551614 | Teisberg et al. | Jun 2009 | B2 |
7554993 | Modi et al. | Jun 2009 | B2 |
7555566 | Blumrich et al. | Jun 2009 | B2 |
7573967 | Fiedler | Aug 2009 | B2 |
7580415 | Hudson et al. | Aug 2009 | B2 |
7580495 | Fiedler | Aug 2009 | B2 |
7617376 | Chadalapaka et al. | Nov 2009 | B2 |
7631106 | Goldenberg et al. | Dec 2009 | B2 |
7650386 | McMahan et al. | Jan 2010 | B2 |
7653754 | Kagan et al. | Jan 2010 | B2 |
7688853 | Santiago et al. | Mar 2010 | B2 |
7757232 | Hilland et al. | Jul 2010 | B2 |
7801027 | Kagan et al. | Sep 2010 | B2 |
7802071 | Oved | Sep 2010 | B2 |
7813460 | Fiedler | Oct 2010 | B2 |
7827442 | Sharma et al. | Nov 2010 | B2 |
7835375 | Sarkinen et al. | Nov 2010 | B2 |
7848322 | Oved | Dec 2010 | B2 |
7856488 | Cripe et al. | Dec 2010 | B2 |
7864787 | Oved | Jan 2011 | B2 |
7904576 | Krause et al. | Mar 2011 | B2 |
7921178 | Haviv | Apr 2011 | B2 |
7929539 | Kagan et al. | Apr 2011 | B2 |
7930437 | Kagan et al. | Apr 2011 | B2 |
7934959 | Rephaeli et al. | May 2011 | B2 |
7978606 | Buskirk et al. | Jul 2011 | B2 |
8000336 | Harel | Aug 2011 | B2 |
20020016914 | Seki et al. | Feb 2002 | A1 |
20020026502 | Phillips et al. | Feb 2002 | A1 |
20020059052 | Bloch et al. | May 2002 | A1 |
20020091863 | Schug | Jul 2002 | A1 |
20020112139 | Krause et al. | Aug 2002 | A1 |
20020124108 | Terrell et al. | Sep 2002 | A1 |
20020129293 | Hutton et al. | Sep 2002 | A1 |
20020140985 | Hudson | Oct 2002 | A1 |
20020156784 | Hanes et al. | Oct 2002 | A1 |
20030007165 | Hudson | Jan 2003 | A1 |
20030058459 | Wu et al. | Mar 2003 | A1 |
20030063299 | Cowan et al. | Apr 2003 | A1 |
20030065856 | Kagan et al. | Apr 2003 | A1 |
20030081060 | Zeng et al. | May 2003 | A1 |
20030172330 | Barron et al. | Sep 2003 | A1 |
20030191786 | Matson et al. | Oct 2003 | A1 |
20030202043 | Zeng et al. | Oct 2003 | A1 |
20030214677 | Bhaskar et al. | Nov 2003 | A1 |
20040024833 | Siddabathuni | Feb 2004 | A1 |
20040071250 | Bunton et al. | Apr 2004 | A1 |
20040141642 | Zeng et al. | Jul 2004 | A1 |
20040190533 | Modi et al. | Sep 2004 | A1 |
20040190538 | Bunton et al. | Sep 2004 | A1 |
20040190557 | Barron | Sep 2004 | A1 |
20040193734 | Barron et al. | Sep 2004 | A1 |
20040193825 | Garcia et al. | Sep 2004 | A1 |
20040210754 | Barron et al. | Oct 2004 | A1 |
20040252685 | Kagan et al. | Dec 2004 | A1 |
20050008223 | Zeng et al. | Jan 2005 | A1 |
20050018221 | Zeng et al. | Jan 2005 | A1 |
20050038918 | Hilland et al. | Feb 2005 | A1 |
20050038941 | Chadalapaka et al. | Feb 2005 | A1 |
20050039171 | Avakian et al. | Feb 2005 | A1 |
20050039172 | Rees et al. | Feb 2005 | A1 |
20050039187 | Avakian et al. | Feb 2005 | A1 |
20050066333 | Krause et al. | Mar 2005 | A1 |
20050172181 | Huliehel | Aug 2005 | A1 |
20050219278 | Hudson | Oct 2005 | A1 |
20050219314 | Donovan et al. | Oct 2005 | A1 |
20050231751 | Wu et al. | Oct 2005 | A1 |
20060026443 | McMahan et al. | Feb 2006 | A1 |
20060045098 | Krause | Mar 2006 | A1 |
20060126619 | Teisberg et al. | Jun 2006 | A1 |
20060165074 | Modi et al. | Jul 2006 | A1 |
20060193318 | Narasimhan et al. | Aug 2006 | A1 |
20060228637 | Jackson et al. | Oct 2006 | A1 |
20060248191 | Hudson et al. | Nov 2006 | A1 |
20070188351 | Brown et al. | Aug 2007 | A1 |
20070220183 | Kagan et al. | Sep 2007 | A1 |
20080024586 | Barron | Jan 2008 | A1 |
20080109526 | Subramanian et al. | May 2008 | A1 |
20080115216 | Barron et al. | May 2008 | A1 |
20080115217 | Barron et al. | May 2008 | A1 |
20080126509 | Subramanian et al. | May 2008 | A1 |
20080135774 | Hugers | Jun 2008 | A1 |
20080147828 | Enstone et al. | Jun 2008 | A1 |
20080148400 | Barron et al. | Jun 2008 | A1 |
20080177890 | Krause et al. | Jul 2008 | A1 |
20080244060 | Cripe et al. | Oct 2008 | A1 |
20080301406 | Jacobson et al. | Dec 2008 | A1 |
20080304519 | Koenen et al. | Dec 2008 | A1 |
20090165003 | Jacobson et al. | Jun 2009 | A1 |
20090201926 | Kagan et al. | Aug 2009 | A1 |
20090213856 | Paatela et al. | Aug 2009 | A1 |
20090268612 | Felderman et al. | Oct 2009 | A1 |
20090302923 | Smeloy et al. | Dec 2009 | A1 |
20100088437 | Zahavi | Apr 2010 | A1 |
20100138840 | Kagan et al. | Jun 2010 | A1 |
20100169880 | Haviv et al. | Jul 2010 | A1 |
20100188140 | Smeloy | Jul 2010 | A1 |
20100189206 | Kagan | Jul 2010 | A1 |
20100265849 | Harel | Oct 2010 | A1 |
20100274876 | Kagan et al. | Oct 2010 | A1 |
20110004457 | Haviv et al. | Jan 2011 | A1 |
20110010557 | Kagan et al. | Jan 2011 | A1 |
20110029669 | Chuang et al. | Feb 2011 | A1 |
20110029847 | Goldenberg et al. | Feb 2011 | A1 |
20110044344 | Hudson et al. | Feb 2011 | A1 |
20110058571 | Bloch et al. | Mar 2011 | A1 |
20110083064 | Kagan et al. | Apr 2011 | A1 |
20110096668 | Bloch et al. | Apr 2011 | A1 |
20110113083 | Shahar | May 2011 | A1 |
20110116512 | Crupnicoff et al. | May 2011 | A1 |
20110119673 | Bloch et al. | May 2011 | A1 |
20110173352 | Sela et al. | Jul 2011 | A1 |
Number | Date | Country |
---|---|---|
620521 | Oct 1994 | EP |
WO0067131 | Nov 2000 | GB |
WO 0067131 | Nov 2000 | WO |
WO 0067131 | Nov 2000 | WO |
WO0148972 | Jul 2001 | WO |
WO0235838 | May 2002 | WO |
WO2008127672 | Oct 2008 | WO |
WO2009134219 | Nov 2009 | WO |
WO2009136933 | Nov 2009 | WO |
WO2010020907 | Feb 2010 | WO |
WO2010087826 | Aug 2010 | WO |
WO2011043768 | Apr 2011 | WO |
WO2011053305 | May 2011 | WO |
WO2011053330 | May 2011 | WO |
Entry |
---|
D. Riddoch, S. Pope, D. Roberts, G. Mapp, D. Clarke, D. Ingram, K. Mansley, and A. Hopper. Tripwire: A Synchronisation Primitive for Virtual Memory Mapped Computing. In Proceedings of the 4th International Conference on Algorithms and Architectures for Parallel Processing (ICA3PP), 2000. |
Proceedings of the 13th International Conference on Supercomputing paper ‘Realizing the Performance Potential of the Virtual Interface Architecture’ (Jun. 1999). |
Technical Specification ‘Virtual Interface Architecture Specification Version 1.0’ (Dec. 16, 1997) to Compaq et al. (“Compaq”). |
Bhoedjang, R.A.F.; Ruhl, T.; Bal, H.E.; , “Efficient multicast on Myrinet using link-level flow control,” Parallel Processing, 1998. Proceedings. 1998 International Conference on , vol., No., pp. 381-390, Aug. 10-14, 1998 doi: 10.1109/ICPP.1998.708509. |
Massimo Bertozzi, Franco Boselli, Gianni Conte, and Monica Reggiani. 1999. An MPI Implementation on the Top of the Virtual Interface Architecture. In Proceedings of the 6th European PVM/MPI Users' Group Meeting on Recent Advances IN PVM/MPI, Jack Dongarra, Emilio Luque, and Tomàs Margalef (Eds.). Springer-Verlag, London, UK, UK, 199-206. |
P. Druschel, Operating System Support for High-Speed Communication: Techniques to Eliminate Processing Bottlenecks in High-Speed Networking are Presented, Communication of the ACM, Sep. 1996, pgs. 41-51, vol. 39(9), XP000642200. |
P. Druschel et al., Lazy Receiver Processing (LRP): A Network Subsystem Architecture for Server Systems, Operating Systems Review (SIGOPS), Dec. 1996, pp. 261-275, vol. 30, XP000643517. |
S. Mukherjee et al., A Survey of User-Level Network Interfaces for System Area Networks, University of Wisconsin-Madison, Technical Report #1340, Feb. 1997, pp. 1-26, XP002302774. |
I. Pratt et al., Arsenic: A User-Accessible Gigabit Ethernet Interface, IEEE INFOCOM, Apr. 2001, pp. 67-76, vol. 1, Conf. 20, XP10538686. |
D. Riddoch et al., A Low Overhead Application/Device-driver Interface for User-level, Networking, International Conference on Parallel and Distributed Processing Techniques and Applications, Jun. 2001, pp. 1-7, XP002302772. |
D. Riddoch et al., Tripwire: A Synchronisation of Primitive for Virtual Memory Mapped Communication, Journal of Interconnection Networks (JOIN), Sep. 2001, pp. 345-364, vol. 2(3), XP002302773. |
Gordon E. Moore, Cramming more components onto integrated circuits, Electronics, vol. 38, No. 8, pp. 114-117, Apr. 19, 1965. |
Jack B. Dennis and Earl C. Van Horn, Programming Semantics for Multiprogrammed Computations, Communications of the ACM, vol. 9, No. 3, pp. 143-155, Mar. 1966. |
Marvin Zelkowitz, Interrupt Driven Programming, Communications of the ACM, vol. 14, No. 6, p. 417-418, Jun. 1971. |
J. Carver Hill, Synchronizing Processors with Memory-Content-Generated Interrupts, Communications of the ACM, vol. 16, No. 6, p. 350-351, Jun. 1973. |
F.F. Kuo, The Aloha System, ACM Computer Communication Review, vol. 4 No. 1, Jan. 1974. |
Vinton Cert, Robert Kahn, A Protocol for Packet Network Intercommunication, IEEE Transactions on Communications, vol. COM-22, No. 5, pp. 637-648, May 1974. |
V. Cert, et al., Proposal for an International End-to-End Protocol, ACM Computer Communication Review, vol. 6 No. 1, p. 1-18, Jan. 1976. |
Robert M. Metcalfe and David R. Boggs, Ethernet: distributed packet switching for local computer networks, Communications of the ACM, vol. 19, Issue 7, pp. 395-404, Jul. 1976. |
P. Kermani and L. Kleinrock, Virtual cut-through: A new computer communciation switching technique, Computer Networks, vol. 3, No. 4, pp. 267-286, Sep. 1979. |
John M. McQuillan, et al., An Overview of the New Routing Algorithm for the ARPANET, Proceedings of the 6th Data Communications Symposium, p. 63, Nov. 1979. |
Andrew D. Birrell, et al., Grapevine: An Exercise in Distributed Computing, Communications of the ACM, vol. 25, Issue 4, pp. 260-274, Apr. 1982. |
Ian M. Leslie, et al., The Architecture of the Universe Network, ACM Computer Communication Review, vol. 14, No. 2, pp. 2-9, Jun. 1984. |
John Nagle, Congestion Control in IP/TCP Internetworks, ACM Computer Communication Review, vol. 14, No. 4, p. 11-17, Oct. 1984. |
Robert M. Brandriff, et al., Development of a TCP/IP for the IBM/370, ACM Computer Communication Review, vol. 15, No. 4, Sep. 1985. |
C. Kline, Supercomputers on the Internet: A Case Study, ACM Computer Communication Review, vol. 17, No. 5, Aug. 1987. |
Christopher A. Kent, Jeffrey C. Mogul, Fragmentation Considered Harmful, ACM Computer Communication Review, vol. 17, No. 5, pp. 390-401, Oct. 1987. |
Gary S. Delp, et al., An Analysis of Memnet: An Experiment in High-Speed Shared-Memory Local Networking, ACM Computer Communication Review, vol. 18, No. 4, p. 165-174, Aug. 1988. |
David R. Boggs, et al., Measured Capacity of an Ethernet: Myths and Reality, Computer Communication Review, vol. 18, No. 4, p. 222-234, Aug. 1988. |
H. Kanakia and D. Cheriton, The VMP Network Adapter Board (NAB): High-Performance Network Communication for Multiprocessors, ACM Computer Communication Review, vol. 18, No. 4, p. 175-187, Aug. 1988. |
V. Jacobson, Congestion Avoidance and Control, ACM Computer Communication Review, vol. 18, No. 4, p. 314-329, Aug. 1988. |
David D. Clark, The Design Philosophy of the DARPA Internet Protocols, ACM Computer Communication Review, vol. 18, No. 4, pp. 106-114, Aug. 1988. |
Paul V. Mockapetris, Kevin J. Dunlap, Development of the Domain Name System, ACM Computer Communication Review, vol. 18, No. 4, pp. 123-133, Aug. 1988. |
Margaret L. Simmons and Harvey J. Wasserman, Performance Comparison of the Cray-2 and Cray X-MP/416 Supercomputers, Proceedings of the 1988 ACM/IEEE conference on Supercomputing, p. 288-295, Orlando, Florida, Nov. 12, 1988. |
David A. Borman, Implementing TCP/IP on a Cray computer, ACM Computer, Communication Review, vol. 19, No. 2, p. 11-15, Apr. 1989. |
R. Braden, et al., Computing the Internet Checksum, ACM Computer Communication Review, vol. 19, No. 2, p. 86-94, Apr. 1989. |
David D. Clark, et al., An Analysis of TCP Processing Overhead, IEEE Communications Magazine, vol. 27, No. 6, pp. 23-29, Jun. 1989. |
David R. Cheriton, Sirpent: A High-Performance Internetworking Approach, ACM Computer Communication Review, vol. 19, No. 4, p. 158-169, Sep. 1989. |
Derek Robert McAuley, Protocol Design for High Speed Networks, PhD Thesis, University of Cambridge, Sep. 1989. |
Craig Partridge, How Slow Is One Gigabit Per Second ? , ACM Computer Communication Review, vol. 20, No. 1, p. 44-53, Jan. 1990. |
D. D. Clark and D. L., Tennenhouse, Architectural Considerations for a New Generation of Protocols, ACM Computer Communication Review, vol. 20, No. 4, pp. 200-208, Sep. 1990. |
Eric C. Cooper, et al., Protocol Implementation on the Nectar Communication Processor, ACM Computer Communication Review, vol. 20, No. 4, p. 135-144, Sep. 1990. |
Bruce S. Davie, A Host-Network Interface Architecture for ATM, ACM Computer Communication Review, vol. 21, No. 4, Sep. 1991. |
C. Brendan S. Traw, et al., A High-Performance Host Interface for ATM Networks, ACM Computer Communication Review, vol. 21, No. 4, p. 317-325, Sep. 1991. |
Ian Leslie and Derek R. McAuley, Fairisle: An ATM Network for the Local Area, ACM Computer Communication Review, vol. 21, No. 4, p. 327, Sep. 1991. |
Mark Hayter, Derek McAuley, The Desk Area Network, ACM Operating Systems Review, vol. 25, Issue 4, p. 14-21, Oct. 1991. |
Gregory G. Finn, An Integration of Network Communication with Workstation Architecture, ACM Computer Communication Review, vol. 21, No. 5, p. 18-29, Oct. 1991. |
Greg Chesson, The Evolution of XTP, Proceedings of the Third International Conference on High Speed Networking, Nov. 1991. |
Michael J. Dixon, System support for multi-service traffic, University of Cambridge Computer Laboratory Technical Report No. 245, Jan. 1992. |
Danny Cohen, Gregory Finn, Robert Felderman, Annette DeSchon, ATOMIC: A Local Communication Network Created Through Repeated Application of Multicomputing Components, Made available by authors, Jan. 10, 1992. |
Gene Tsudik, Message Authentication with One-Way Hash Functions, ACM Computer Communication Review, vol. 22, No. 5, pp. 29-38, Oct. 1992. |
Peter Steenkiste, Analyzing Communication Latency using the Nectar Communication Processor, ACM Computer Communication Review, vol. 22, No. 4, Oct. 1992. |
Paul E. McKenney and Ken F. Dove, Efficient Demultiplexing of Incoming TCP Packets, ACM Computer Communication Review, vol. 22, No. 4, Oct. 1992. |
Erich Ruetsche and Matthias Kaiserswerth, TCP/IP on the Parallel Protocol Engine, Proceedings of the IFIP TC6NVG6.4 Fourth International Conference on High Performance Networking IV, Dec. 14, 1992. |
C. Traw and J. Smith, Hardware/Software organization of a high performance ATM host interface, IEEE Journal on Selected Areas in Communications, pp. 240-253, Feb. 1993. |
E. Ruetsche, The Architecture of Gb/s Multimedia Protocol Adapter, ACM Computer Communication Review, vol. 23, No. 3, Jul. 1993. |
Jonathan M. Smith and C. Brendan S. Traw, Giving Applications Access to Gb/s Networking IEEE Network, vol. 7, Issue 4, pp. 44-52, Jul. 1993. |
Jeffrey R. Michel, The Design and Evaluation of an Off-Host Communications Protocol Architecture, MSci Thesis, University of Virginia, Aug. 1993. |
Mark David Hayter, A Workstation Architecture to Support Multimedia, PhD Thesis, University of Cambridge, Sep. 1993. |
Jonathan Kay and Joseph Pasquale, The Importance of Non-Data Touching Processing Overheads in TCP/IP, ACM Computer Communication Review, vol. 23, No. 4, pp. 259-268, Oct. 1993. |
W. E. Leland, et al., On the Self-Similar Nature of Ethernet Traffic, ACM Computer Communication Review, vol. 23, No. 4, p. 85-95, Oct. 1993. |
C. A. Thekkath, et al., Implementing Network Protocols at User Level, ACM Computer Communication Review, vol. 23, No. 4, Oct. 1993. |
Raj K. Singh, et al., A Programmable HIPPI Interface for a Graphics Supercomputer, Proceedings of the 1993 ACM/IEEE conference on Supercomputing, p. 452-461, Portland, Oregon, Nov. 15, 1993. |
Peter Druschel and Larry L. Peterson, Fbufs: A High-Bandwidth Cross-Domain Transfer Facility, ACM Operating Systems Review, vol. 27, Issue 5, p. 189-202, Dec. 1993. |
Matthias Kaiserswerth, The Parallel Protocol Engine, IEEE/ACM Transactions on Networking, vol. 1, No. 6, p. 650-663, Dec. 1993. |
Chris Maeda, Brian Bershad, Protocol Service Decomposition for High-Performance Networking, ACM Operating Systems Review, vol. 27, Issue 5,p. 244-255, Dec. 1993. |
Greg Regnier, et al., ETA: Experience with an Intel Xeon Processor as a Packet Processing Engine, IEEE Micro, vol. 24, No. 1, p. 24-31, Jan. 1994. |
J. Vis, A Simple LAN Performance Measure, ACM Computer Communication Review, vol. 24, No. 1, pp. 7-11, Jan. 1994. |
Danny Cohen, Gregory Finn, Robert Felderman, Annette DeSchon, ATOMIC: A High-Speed Local Communication Architecture, Journal of High Speed Networks, Jan. 3, 1994. |
Gregory G. Finn and Paul Mockapetris, Netstation Architecture Multi-Gigabit Workstation Network Fabric, Proceedings of InterOp '94, Las Vegas, Nevada, May 1994. |
Stuart Wray, et al., The Medusa Applications Environment, Proceedings of the International Conference on Multimedia Computing and Systems, p. 265-273, Boston, May 1994. |
Various forum members, MPI: A Message-Passing Interface Standard, Message-Passing Interface Forum, University of Tennessee, Knoxville, May 5, 1994. |
Raj K. Singh, et al., A Programmable Network Interface for a Message-Based Multicomputer, ACM Computer Communication Review, vol. 24, No. 3, p. 8-17, Jul. 1994. |
P. Druschel, et al., Experiences with a High-Speed Network Adaptor: A Software Perspective, ACM Computer Communication Review, vol. 24, No. 4, Oct. 1994. |
Sally Floyd, TCP and Explicit Congestion Notification, ACM Computer Communication Review, vol. 24, No. 5, p. 8-23, Oct. 1994. |
A. Edwards, et al., User-Space Protocols Deliver High Performance to Applications on a Low-Cost Gb/s LAN, ACM Computer Communication Review, vol. 24, No. 4, pp. 14-23, Oct. 1994. |
L. S. Brakmo, et al., TCP Vegas: New Techniques for Congestion Detection and Avoidance, ACM Computer Communication Review, vol. 24, No. 4, p. 24-35, Oct. 1994. |
A. Romanow and S. Floyd, The Dynamics of TCP Traffic over ATM Networks, ACM Computer Communication Review, vol. 24, No. 4, p. 79-88, Oct. 1994. |
R. J. Black, I. Leslie, and D. McAuley, Experiences of Building an ATM Switch for the Local Area, ACM Computer Communication Review, vol. 24, No. 4, p. 158-167, Oct. 1994. |
Babak Falsafi, et al., Application-Specific Protocols for User-Level Shared Memory, Proceedings of the 1994 conference on Supercomputing, pp. 380-389, Washington D.C., Nov. 14, 1994. |
Mengjou Lin, et al., Performance of High-Speed Network I/O Subsystems: Case Study of a Fibre Channel Network, Proceedings of the 1994 conference on Supercomputing, Washington D.C., Nov. 14, 1994. |
Nanette J. Boden, et al., Myrinet: A Gigabit-per-Second Local-Area Network, Draft of paper published in IEEE Micro, vol. 15, No. 1, pp. 29-36, Nov. 16, 1994. |
Thomas Sterling, et al., Beowolf: A Parallel Workstation for Scientific Computation, Proceedings of the 24th International Conference on Parallel Processing, pp. 11-14, Aug. 1995. |
K. Kleinpaste, P. Steenkiste, B. Zill, Software Support for Outboard Buffering and Checksumming, ACM Computer Communication Review, vol. 25, No. 4, p. 87-98, Oct. 1995. |
C. Partridge, J. Hughes, J. Stone, Performance of Checksums and CRCS over Real Data, ACM Computer Communication Review, vol. 25, No. 4, p. 68-76, Oct. 1995. |
A. Edwards, S. Muir, Experiences Implementing a High-Performance TCP in User-Space, ACM Computer Communication Review, vol. 25, No. 4, Oct. 1995. |
J. C. Mogul, The Case for Persistent-Connection HTTP, ACM Computer Communication Review, vol. 25, No. 4, Oct. 1995. |
Thorsten von Eicken, et al., U-Net: A User-Level Network Interface for Parallel and Distributed Computing, ACM Operating Systems Review, vol. 29, Issue 5, p. 109-126, Dec. 1995. |
D. L. Tennenhouse, D. J., Wetherell Towards an Active Network Architecture, ACM Computer Communication Review, vol. 26, No. 2, pp. 15-20, Apr. 1996. |
Paul Ronald Barham, Devices in a Multi-Service Operating System, PhD Thesis, University of Cambridge, Jul. 1996. |
Chi-Chao Chang, et al., Low-Latency Communication on the IBM RISC System/6000 SP, Proceedings of the 1996 ACM/IEEE conference on Supercomputing, Pittsburgh, Nov. 17, 1996. |
Joe Touch, et al., Experiences with a Production Gigabit LAN, Gigabit Networking Workshop '97 Meeting, Kobe, Japan, Apr. 1997. |
Joe Touch, et al., Host-based Routing Using Peer DMA, Gigabit Networking Workshop '97 Meeting, Kobe, Japan, Apr. 1997. |
O. Angin, et al., Report on the 5th IFIP International Workshop on Quality of Service (IWQOS 97), ACM Computer Communication Review, vol. 27, No. 3, pp. 100-117, Jul. 1997. |
Charles P. Thacker and Lawrence C. Stewart, Firefly: a Multiprocessor Workstation, ACM Operating Systems Review, vol. 21, Issue 4, p. 164-172, Oct. 1997. |
Ed Anderson, et al., Performance of the CRAY T3E Multiprocessor, Proceedings of the 1997 ACM/IEEE conference on Supercomputing, p. 1-17, San Jose, California, Nov. 16, 1997. |
Harvey J. Wassermann, et al., Performance Evaluation of the SGI Origin2000: A Memory-Centric Characterization of LANL ASCI Applications, Proceedings of the 1997 ACM/IEEE conference on Supercomputing, p. 1-11, San Jose, California, Nov. 16, 1997. |
Philip Buonadonna, et al., An Implementation and Analysis of the Virtual Interface Architecture, Proceedings of the 1998 ACM/IEEE conference on Supercomputing, p. 1-15, Orlando, Florida, Nov. 7, 1998. |
Parry Husbands and James C. Hoe, MPI-StarT: Delivering Network Performance to Numerical Applications, Proceedings of the 1998 ACM/IEEE conference on Supercomputing, p. 1-15, Orlando, Florida, Nov. 7, 1998. |
Michael S. Warren, at al., Avalon: An Alpha/Linux Cluster Achieves 10 Gflops for $150k, Proceedings of the 1998 ACM/IEEE conference on Supercomputing, Orlando, Florida, Nov. 7, 1998. |
John Salmon, et al., Scaling of Beowulf—class Distributed Systems, Proceedings of the 1998 ACM/IEEE conference on Supercomputing, Orlando, Florida, Nov. 7, 1998. |
Boon S. Ang, et al. StarT-Voyager: A Flexible Platform for Exploring Scalable SMP Issues, Proceedings of the 1998 ACM/IEEE conference on Supercomputing, Orlando, Florida, Nov. 7, 1998. |
S. L. Pope, et al., Enhancing Distributed Systems with Low-Latency Networking, Parallel and Distributed Computing and Networks, Brisbane, Australia, Dec. 1998. |
M. de Vivo, at al., Internet Vulnerabilities Related to TCP/IP and T/TCP, ACM Computer Communication Review, vol. 29, No. 1, pp. 81-85, Jan. 1999. |
M. Allman, TCP Byte Counting Refinements, ACM Computer Communication Review, vol. 29, No. 3, Jul. 1999. |
Steve Muir and Jonathan Smith, Piglet: A Low-Intrusion Vertical Operating System, Technical Report MS-CIS-00-04, University of Pennsylvania, Jan. 2000. |
Patrick Crowley, et al., Characterizing Processor Architectures for Programmable Network Interfaces, Proceedings of the 14th international conference on Supercomputing, pp. 54-65, Santa Fe, New Mexico, May 8, 2000. |
Jonathan Stone, Craig Partridge, When The CRC and TCP Checksum Disagree, ACM Computer Communication Review, vol. 30, No. 4, pp. 309-319, Oct. 2000. |
W. Feng and P. Tinnakornsrisuphap, The Failure of TCP in High-Performance Computational Grids, Proceedings of the 2000 ACM/IEEE conference on Supercomputing, Dallas, Texas, Nov. 4, 2000. |
Jenwei Hsieh, et al., Architectural and Performance Evaluation of GigaNet and Myrinet Interconnects on Clusters of Small-Scale SMP Servers, Proceedings of the 2000 ACM/IEEE conference on Supercomputing, Dallas, Texas, Nov. 4, 2000. |
Ian Pratt and Keir Fraser, Arsenic: A User-Accessible Gigabit Ethernet Interface, Proceedings of IEEE Infocom 2001, pp. 67-76, Apr. 22, 2001. |
Bilic Hrvoye, et al., Deferred Segmentation for Wire-Speed Transmission of Large TCP Frames over Standard GbE Networks, Proceedings of the 9th Symposium on High Performance Interconnects, pp. 81, Aug. 22, 2001. |
Bilic Hrvoye, et al., Presentation given at HOTI'01, 9th Symposium on High Performance Interconnects, Aug. 22, 2001. |
Bruce Lowekamp, et al., Topology Discovery for Large Ethernet Networks, ACM Computer Communication Review, vol. 31, No. 4, Oct. 2001. |
Piyush Shivam, et al., EMP: Zero-copy OS-bypass NIC-driven Gigabit Ethernet Message Passing, Proceedings of the 2001 ACM/IEEE conference on Supercomputing, pp. 57, Denver, Nov. 10, 2001. |
Robert Ross, et al., A Case Study in Application I/O on Linux Clusters, Proceedings of the 2001 ACM/IEEE conference on Supercomputing, pp. 11, Denver, Nov. 10, 2001. |
E. Blanton and M. Allman, On Making TCP More Robust to Packet Reordering, ACM Computer Communication Review, vol. 32 No. 1, Jan. 2002. |
Murali Rangarajan, et al., TCP Servers: Offloading TCP Processing in Internet Servers. Design, Implementation, and Performance, Technical Report DCR-TR-481, Computer Science Department, Rutgers University, Mar. 2002. |
Jon Crowcroft, Derek McAuley, ATM: A Retrospective on Systems Legacy, ACM Computer Communication Review, vol. 32, No. 5, Nov. 2002. |
Charles Kalmanek, A Retrospective View of ATM, ACM Computer Communication Review, vol. 32, No. 5, pp. 13-19, Nov. 2002. |
Jonathan Smith, The Influence of ATM on Operating Systems, ACM Computer Communication Review, vol. 32, No. 5, pp. 29-37, Nov. 2002. |
NR Adiga, et al., An Overview of the BlueGene/L Supercomputer, Proceedings of the 2002 ACM/IEEE conference on Supercomputing, pp. 1-22, Baltimore, Nov. 16, 2002. |
Steven J. Sistare, Christopher J. Jackson, Ultra-High Performance Communication with MPI and the Sun Fire Link Interconnect, Proceedings of the 2002 ACM/IEEE conference on Supercomputing, p. 1-15, Baltimore, Nov. 16, 2002. |
R. Bush, D. Meyer, Some Internet Architectural Guidelines and Philosophy, IETF Network Working Group, Request for Comments: 3439, Dec. 2002. |
Pasi Sarolahti, et al., F-RTO: An Enhanced Recovery Algorithm for TCP Retransmission Timeouts, ACM Computer Communication Review, vol. 33, No. 2, Apr. 2003. |
Tom Kelly, Scalable TCP: Improving Performance in Highspeed Wide Area Networks, ACM Computer Communication Review, vol. 33, No. 2, pp. 83-91, Apr. 2003. |
Jeffrey C. Mogul, TCP offload is a dumb idea whose time has come, Proceedings of HotOS IX: The 9th Workshop on Hot Topics in Operating Systems, pp. 25-30, May 18, 2003. |
Derek McAuley, Rolf Neugebauer, A case for Virtual Channel Processors, Proceedings of the ACM SIGCOMM 2003 Workshops, Aug. 2003. |
Justin Hurwitz, Wu-chun Feng, Initial End-to-End Performance Evaluation of 10-Gigabit Ethernet, Proceedings of the 11th Symposium on High Performance Interconnects, Aug. 20, 2003. |
Vinay Aggarwal, et al., Workshop on network-I/O convergence: experience, lessons, implications (NICELI), ACM Computer Communication Review, vol. 33, No. 5, Oct. 2003. |
Wu-chun Feng, et al., Optimizing 10-Gigabit Ethernet for Networks ofWorkstations, Clusters, and Grids: A Case Study, Proceedings of the 2003 ACM/IEEE conference on Supercomputing, Phoenix, Arizona, Nov. 15, 2003. |
Jiuxing Liu, et al., Performance Comparison of MPI Implementations over InfiniBand, Myrinet and Quadric, Proceedings of the 2003 ACM/IEEE conference on Supercomputing, Phoenix, Arizona, Nov. 15, 2003. |
Srihari Makineni and Ravi Iyer, Architectural Characterization of TCP/IP Packet Processing on the Pentium M Processor, Proceedings of the 10th International Symposium on High Performance Computer Architecture, pp. 152, Feb. 14, 2004. |
Cheng Jin, et al., FAST TCP: Motivation, Architecture, Algorithms, Performance, Proceedings of IEEE Infocom 2004, pp. 1246-1259, Mar. 7, 2004. |
Andy Currid, TCP Offload to the Rescue, ACM Queue, vol. 2, No. 3, May 1, 2004. |
Greg Regnier, et al., TCP Onloading for Data Center Servers, Computer, IEEE Computer Society, vol. 37, No. 11, pp. 48-58, Nov. 2004. |
Gregory L. Chesson, Declaration of Dr Gregory L Chesson in Alacritech v. Microsoft United States District Court, Northern District California, San Francisco Division, Feb. 4, 2005. |
Edward D. Lazowska, David A. Patterson, Computing Research: A Looming Crisis, ACM Computer Communication Review, vol. 35, No. 2, Jul. 2005. |
W. Feng, et al., Performance Characterization of a 10-Gigabit Ethernet TOE, Proceedings of the 13th Symposium on High Performance Interconnects, Aug. 17, 2005. |
B. Leslie, et al., User-level device drivers: Achieved performance, J. Comput. Sci. & Technol., vol. 20, Sep. 2005. |
P. Balaji, et al., Head-to-TOE Evaluation of High-Performance Sockets Over Protocol Offload Engines, Proceedings of the IEEE International Conference on Cluster Computing, Sep. 2005. |
Humaira Kamal, et al., SCTP versus TCP for MPI, Proceedings of the 2005 ACM/IEEE conference on Supercomputing, Seattle, p. 30, Washington, Nov. 12, 2005. |
Sumitha Bhandarkar, et al., LTCP: Improving the Performance of TCP in Highspeed Networks, ACM Computer Communication Review, vol. 36, No. 1, pp. 41-50, Jan. 2006. |
H. K. Jerry Chu, Zero-Copy TCP in Solaris, Proceedings of the USENIX Annual Technical Conference Jan. 1996. |
Ken Calvert, Reflections on Network Architecture: an Active Networking Perspective, ACM Computer Communication Review, vol. 36, No. 2, pp. 27-30, Apr. 2006. |
Jon Crowcroft, 10 Networking Papers: Recommended Reading, ACM Computer Communication Review, vol. 36, No. 2, pp. 51-52, Apr. 2006. |
Greg Minshall, et al., Flow labelled IP over ATM: design and rationale, ACM Computer Communication Review, vol. 36, No. 3, pp. 79-92, Jul. 2006. |
David Wetherall, 10 Networking Papers: Readings for Protocol Design, ACM Computer Communication Review, vol. 36, No. 3, pp. 77-78, Jul. 2006. |
Patrick Geoffray, A Critique of RDMA, HPCWire article: http://www.hpcwire.com/features/17886984.html, Aug. 18, 2006. |
Various, Various presentations given at HOTI'06, 14th Symposium on High Performance Interconnects, Aug. 23, 2006. |
Jose Carlos Sancho, et al., Quantifying the Potential Benefit of Overlapping Communication and Computation in Large-Scale Scientific Applications, Proceedings of the 2006 ACM/IEEE conference on Supercomputing, Tampa, Florida, Nov. 11, 2006. |
Sayantan Sur, et al., High-Performance and Scalable MPI over InfiniBand with Reduced Memory Usage: An In-Depth Performance Analysis, Proceedings of the 2006 ACM/IEEE conference on Supercomputing, Tampa, Florida, Nov. 11, 2006. |
Steven Pope, David Riddoch, 10Gb/s Ethernet Performance and Retrospective, ACM Computer Communication Review, vol. 37, No. 2, pp. 89-92, Mar. 19, 2007. |
Kieran Mansley, et al., Getting 10 Gb/s from Xen, Euro-Par Conference 2007, pp. 224-233, Rennes, France, Aug. 28, 2007. |
M. Kaiserswerth, The Parallel Protocol Engine, IEEE/ACM Transactions in Networking, vol. 1, Issue 6, pp. 650-663, Dec. 1993. |
Danny Cohen, et al., Use of message-based multicomputer components to construct gigabit networks, ACM Computer Communication Review, vol. 23, No. 4, p. 32-44, Jul. 1993. |
J. Evans and T. Buller, The End of History, IEEE TCGN Gigabit Networking Workshop, Apr. 22, 2001. |
M.V. Wilkes and R.M. Needham, The Cambridge Model Distributed System, ACM SIGOPS Operating Systems Review, vol. 14, Issue 1, pp. 21-29, Jan. 1980. |
Petrini, F., Pacific Northwest National Laboratory, “Protocol Off-loading vs. On-loading in High Performance Networks”, 14th Annual Symposium on High Performance Interconnects (HOTI '06), Aug. 2006, Stanford University, CA USA, 4 pp. |
Mogul, J., “Thoughts about TCP offloading”, 14th Annual Symposium on High Performance Interconnects (HOTI '06), Aug. 2006, Stanford University, CA, USA, 3 pages. |
Dickman, L., “Protocol Offloading vs Onloading in High Performance Networks”, 14th Annual Symposium on High Performance Interconnects (HOTI '06), Aug. 2006, Stanford University, CA, USA, 7 pp. |
Geoffray, P., “Protocol off-loading vs on-loading in high-performance networks”, 14th Annual Symposium on High Performance Interconnects (HOTI '06), Aug. 2006, Stanford University, CA, USA, 5 pp. |
Montry, G., “The NE010 iWARP Adapter”, 14th Annual Symposium on High Performance Interconnects (HOTI '06), Aug. 2006, Stanford University, CA, USA, 8 pp. |
Regnier, G., “Protocol Onload vs. Offload”, 14th Annual Symposium on High Performance Interconnects (HOTI '06), Aug. 2006, Stanford University, CA, USA, 1 page. |
Chen et al., “UTLB: A Mechanism for Address Translation on Network Interfaces”, Proceedings of the Eighth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS). Oct. 1998, pp. 193-204. |
Druschel et al., “Experiences with a High-Speed Network Adaptor: A Software Perspective”, Proceedings of the SIGCOMM '94 Conference, pp. 2-13, London, UK, Aug. 1994. |
Roberts et al., “Data Transfer, Synchronising Applications, and Low Latency Networks”, International Publication No. WO 00/67131, Publication Date: Nov. 9, 2000. |
Pfister, Gregory, “An Introduction to the InfiniBand Architecture,” Part IX; Emerging Technologies and Future Trends, 2001, pp. 617-632, IEEE Press, NY. |
Non-Final Office Action, U.S. Appl. No. 11/750,117, dated Sep. 8, 2008, 14 pages. |
Final Office Action, U.S. Appl. No. 11/750,117, dated Jun. 10, 2009, 12 pages. |
Non-Final Office Action, U.S. Appl. No. 11/750,117, dated Dec. 28, 2009, 14 pages. |
Final Office Action, U.S. Appl. No. 11/750,117, dated Jul. 29, 2010, 13 pages. |
Number | Date | Country | |
---|---|---|---|
20110040897 A1 | Feb 2011 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 10661765 | Sep 2003 | US |
Child | 12910391 | US |