This application is related to the following patent applications, each of which is hereby incorporated by reference in its entirety:
U.S. Patent Application titled “SYSTEM AND METHOD FOR SUPPORTING OPTIMIZED BUFFER UTILIZATION FOR PACKET PROCESSING IN A NETWORKING DEVICE”, application Ser. No. 14/072,597, filed Nov. 5, 2013; and
U.S. Patent Application titled “SYSTEM AND METHOD FOR SUPPORTING VIRTUALIZED SWITCH CLASSIFICATION TABLES”, application Ser. No. 14/072,658, filed Nov. 5, 2013.
A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The present invention is generally related to computer systems, and is particularly related to an engineered system for middleware and application execution.
As larger cloud computing architectures are introduced, the performance and administrative bottlenecks associated with the traditional network and storage have become a significant problem. An engineered system, such as the Oracle engineered system, can provide excellent processing speeds, significantly faster deployments, instant visuals for in-depth analysis, and manageable big data capability. This is the general area that embodiments of the invention are intended to address.
Described herein are systems and methods that can support efficient packet processing in a network environment. The system can comprise a thread scheduling engine that operates to assign a thread key to each software thread in a plurality of software threads. Furthermore, the system can comprise a pool of direct memory access (DMA) resources that can be used to process packets in the network environment. Additionally, each said software thread operates to request access to a DMA resource in the pool of DMA resources by presenting an assigned thread key, and a single software thread is allowed to access multiple DMA resources using the same thread key.
The invention is illustrated, by way of example and not by way of limitation, in the figures of the accompanying drawings in which like references indicate similar elements. It should be noted that references to “an” or “one” or “some” embodiment(s) in this disclosure are not necessarily to the same embodiment, and such references mean at least one.
The description of the invention as following uses the InfiniBand (IB) network switch as an example for a high performance networking device. It will be apparent to those skilled in the art that other types of high performance networking devices can be used without limitation.
Described herein are systems and methods that can support multi-threaded direct memory access (DMA) processing in a network environment. In accordance with an embodiment of the invention, the system allows the DMA processing to be flexible and with low memory footprint.
High Performance Networking Device
In accordance with an embodiment of the invention, embedded processors, e.g. DMA engines 110, can be used in the networking device 101 for processing packets, such as the packets 121-124 (e.g. including both control packets and data packets). Here, the transmission and reception of these packets 121-124 can occur at the network ports 111-112 of the networking device 101.
As shown in
Furthermore, when a networking device 101 supports a virtualized fabric, the throughput requirements for processing the control packets 121-124 may vary accordingly to the requirement of the different virtualized applications 108. As shown in
In order to support the virtualized applications 108, these different control packet streams, from various VMs 105-107, can be mapped to hardware resources in the networking device 101 for packet processing. In accordance with an embodiment of the invention, the embedded processors, such as the DMA engines 110, can perform different types of packet processing and can run a large number of software threads (or work queues).
Unlike the DMA engines that run on traditional network interface cards (NICs), which can have substantial CPU capability and system memory, the embedded systems may have limited CPU capability and system memory. Thus, mapping software threads to the hardware resources in the embedded systems may incur significant software performance penalties. For example, these performance penalties can appear in the form of software thread locking overheads, packet buffer management, and other forms, which can further reduce the available CPU capability.
In accordance with an embodiment of the invention, the system can provide a framework for supporting an efficient packet processing model in the network environment 100. This framework can map a large number of software threads to a limited set of hardware DMA processing threads without locking and thread contentions. Additionally, the system can optimize the buffer utilization for packet processing in the networking device 101.
Packet Processing Model
In accordance with an embodiment of the invention, the DMA resources 211-213 can represent DMA descriptors, buffer management and DMA engines used for data movement. For example, the DMA resources 211-213 can be tied to one or more DMA engines 220 that represent the physical medium, on which packet transfers can occur.
As shown in
For example, the DMA resources 211-213 can be assigned according to the data rate that each DMA Engine can sustain. Here, the assignment of the DMA resources 211-213 may not depend on the number of software threads working on a given DMA engine. This is because the traffic processing may be spread among multiple software threads, and each of these software threads may be active only for the duration of the work processing time.
In accordance with an embodiment of the invention, when a software thread requires performing network data transfer, the software thread can request for accessing a DMA resource by presenting the DMA resource with the assigned thread key. As shown in
For example, the software thread 301 with a thread ID Thid0 can use the assigned thread key, key0311, to allocate a DMA resource from the DMA resource pool 320. Also, the software thread 302 with a thread ID Thid1 can use the assigned thread key, key1312, to allocate a DMA resource from the DMA resource pool 320. Likewise, the software thread 309 with a thread ID Thid9 can use the assigned thread key, key9319, to allocate a DMA resource from the DMA resource pool 320.
If any DMA resource in the DMA resource pool 320 is free, the available DMA resource can be assigned to the requesting software thread. For example, the assigned DMA resource can be mapped to the assigned thread key associated with the requesting software thread. On the other hand, if the DMA resource has already been assigned to another software thread, the requesting software thread may be prevented (or denied) from accessing the DMA resource. Additionally, the system can set the appropriate status for the requesting software thread. Furthermore, if all the DMA resources are in use, then the requesting software thread may have to wait until a DMA resource in the DMA resource pool 320 is free.
In accordance with an embodiment of the invention, using the assigned thread key, the requesting software thread can further configure the DMA resource as it needs, after the resource has been assigned to the software thread. For example, the requesting software thread can set the descriptor properties (e.g. using a linked list instead of a ring structure).
Additionally, a single software thread can make a request for multiple DMA resources if needed. The system can assign multiple DMA resources 321-323 available in the free pool 320 to the requesting software thread based on the same assigned thread key. Furthermore, the software thread can decide whether it wants to maintain ordering between the multiple assigned resources once these DMA resources 321-323 are assigned. For example, the software thread can provide a dependency list to the hardware if ordering is required.
In accordance with an embodiment of the invention, the system allows multiple threads to concurrently access the DMA resources 321-323 (including the packet buffers). By allowing each thread to have a different thread key, the system can send and receive packets from the network fabric without a need for implementing mutex locks or semaphores.
In accordance with an embodiment of the invention, the thread key space can be configured to include a large number of entries in order to support a large number of possible software threads. Thus, the system can map a large number of software threads to a limited set of hardware resources.
Efficient Buffer Utilization for Packet Processing
In accordance with an embodiment of the invention, when a DMA resource is initialized, the DMA resource can point to an empty container, which can be used for containing packet buffers. Furthermore, the buffer chains 531-533 in the memory, where various packet buffers are placed, can be in the form of either a linked list or a linear array. Unlike a fixed ring structure, the size of a buffer chain 531-533 can grow (subject to memory limits). Additionally, using the buffer chains 531-533, the system allows for multi-threaded access to the queuing structures.
As shown in
Furthermore, if a packet processing software thread needs to process more than one set of buffer chains (e.g. in the case of scheduling a second set of packet processing queues before the first set of packet processing queues are done), the requesting software thread can obtain and use another DMA resource out of the same hardware DMA resource pool 520. As shown in
Additionally, if ordering is required among multiple packet processing processes, the system can set a resource dependency number as part of the configuration. The hardware processors can serialize the packet processing if the dependency list is set. Otherwise, the system may process the packets in an arbitrary manner.
Furthermore, if a particular task requires potentially parallel processing by hardware threads and also requires the results to be sent out in order, then the system can dispatch the tasks to the DMA engines that have the dependency attribute set. Thus, the system can pipeline the work and can make use of idle CPU time if it is available, in conjunction with allocating the DMA resources on demand.
In accordance with an embodiment of the invention, since each software thread 501-509 is pre-assigned with a thread key (such as key0511 to key9519), the system can set up multiple threads to concurrent access the packet buffers in the different buffer chains 531-533, without a need for implementing mutex locks or semaphores. This can be true for both sending and receiving packets from the network fabric. Also, the above scheme allows for packets to be pipelined in batches to the hardware either serially, or in parallel, when independent flows are being transmitted.
Each of the DMA resource in the free pool 620 can be associated with a resource ID, such as RID0621, RID3622, and RIDN 623. Furthermore, each DMA resource can maintain a thread key, which can be used to access the different buffer chains, and/or a thread ID, which can be used to assign and manage the different buffer chains.
For example, the software thread 0601 (with a thread key key0) can present the thread key (key0) to the resource manager 610 in order to request for allocating a DMA resource. The resource manager 610, in turn, can provide the thread key (key0) to an available DMA resource, e.g. RID0621. Furthermore, if the thread 601 needs more hardware resources, the resource manager 610 can provide the thread key (key0) to another available DMA resource, e.g. RIDN 623.
Then, the resource manager 610 can provide the status of the DMA resources and all related resource numbers (e.g. RID0621 and RIDN 623) back to the software thread 601. Thus, the software thread 0601 can have access to both chain of buffers 631-633 and 637-639, and can deallocate the related DMA resources after finishing packet processing.
Similarly, the software thread 1602 (with a thread key key1) can present the thread key (key1) to the resource manager 610 in order to request for allocating a DMA resource. The resource manager 610, in turn, can provide the thread key key1 to an available DMA resource, e.g. RID1622. Thus, the software thread 0601 can have access to the chain of buffers 634-636.
As shown in
Additionally, the DMA resource with a resource number 2 can point to a linked list of packet buffers, which starts at a packet buffer 714 with a head address h2 . Here, the packet buffer 714 is collocated with a descriptor and can point to another packet buffer 715.
Furthermore, the software thread accessing the DMA resource with a resource number 1 may make a request for accessing additional hardware resources. For example, the software thread can access the DMA resource with a resource number 32, which points to linked list of packet buffers that starts at a packet buffer 716 with a head address h32. Similarly, packet buffer 716 is collocated with a descriptor and can point to other packet buffers 717 and 718 in the linked list.
Also as shown in
In accordance with an embodiment of the invention, using the scheme based on linked lists, the system can provide for a limited foot print in memory, which can be advantageous in the case of embedded systems. For example, the implementation of the linked list of packet buffers for the Linux environment can be straight forward, since the Linux implementation of packets is based on a linked list. Thus, the system can directly translate a linked list of packets in the Linux environment into a hardware linked list of packet buffers in the memory.
Furthermore, the implementation can be OS independent. For example, the system can be implemented on any general OS, custom OS, or embedded RTOS.
In accordance with an embodiment of the invention, the system can use a linear array of descriptors to implement a buffer chain for holding various packets. Furthermore, each descriptor in the linear array of descriptors can point to a separate packet buffer, and the system can reach each packet buffer from a different packet descriptor.
As shown in
Additionally, the system allows the packet buffers to be processed accordingly to a pre-configured order. For example, the system can set the Order value, for the DMA resource with resource number 3, to 2, in order to force the hardware engine to process the packet buffers associated with the linear array of descriptors 811 before the packet buffers associated with the linear array of descriptors 812 (as shown as an arrow 820 pointing from the linear array of descriptors 811 to the linear array of descriptors 812).
In accordance with an embodiment of the invention, the system can deal with multiple packets in one shot without a need to deal with each packet separately in a sequence. Thus, using the linear array of descriptors, the system can provide low latency, which can be advantageous, e.g. as a cache efficient scheme.
In accordance with an embodiment of the invention, the different DMA resources in the free pool 910 can be associated with different types of buffer chains.
For example, the DMA resource with a resource number 2 can point to a linear array of descriptors 911 with a head address h2, each of which can point to a packet. Similarly, the DMA resource with a resource number 32 can point to a linear array of descriptors 912 with a head address h2, each of which can point to a packet.
Additionally, the DMA resource associated with a resource number 1 can point to a linked list of packet buffers, which start at the packet buffer 913 with head address h1. Within the linked list data structure, the packet buffer 913, which collocates with a descriptor, can point to another packet buffer 915. Similarly, the DMA resource associated with a resource number 32 can point to a linked list of packet buffers, which start at the packet buffer 917 with head address h32. Also, the packet buffer 917, which collocates with a descriptor, can point to other packet buffers 918 and 919 in the linked list data structure.
Furthermore, the system allows the packet buffers to be processed according to a pre-configured order (as shown as an arrow 921 pointed from the linear array of descriptors 911 to the linear array of descriptors 912, and an arrow 922 pointing from the packet buffer 915 to the packet buffer 917).
In accordance with an embodiment of the invention, the system can dynamically determine which type of buffer chain can be allocated for a requesting software thread. Such a determination can be based on the balance of memory usage and latency requirements of the particular packet processing thread. For example, if a particular packet processing thread is more sensitive to memory usage, then the system can allocate a linked list based buffer chain. Otherwise, the system can allocate a linear array based buffer chain, when the particular packet processing thread is more sensitive to latency.
Many features of the present invention can be performed in, using, or with the assistance of hardware, software, firmware, or combinations thereof. Consequently, features of the present invention may be implemented using a processing system (e.g., including one or more processors).
Features of the present invention can be implemented in, using, or with the assistance of a computer program product which is a storage medium (media) or computer readable medium (media) having instructions stored thereon/in which can be used to program a processing system to perform any of the features presented herein. The storage medium can include, but is not limited to, any type of disk including floppy disks, optical discs, DVD, CD-ROMs, microdrive, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, DRAMs, VRAMs, flash memory devices, magnetic or optical cards, nanosystems (including molecular memory ICs), or any type of media or device suitable for storing instructions and/or data.
Stored on any one of the machine readable medium (media), features of the present invention can be incorporated in software and/or firmware for controlling the hardware of a processing system, and for enabling a processing system to interact with other mechanism utilizing the results of the present invention. Such software or firmware may include, but is not limited to, application code, device drivers, operating systems and execution environments/containers.
Features of the invention may also be implemented in hardware using, for example, hardware components such as application specific integrated circuits (ASICs). Implementation of the hardware state machine so as to perform the functions described herein will be apparent to persons skilled in the relevant art.
Additionally, the present invention may be conveniently implemented using one or more conventional general purpose or specialized digital computer, computing device, machine, or microprocessor, including one or more processors, memory and/or computer readable storage media programmed according to the teachings of the present disclosure. Appropriate software coding can readily be prepared by skilled programmers based on the teachings of the present disclosure, as will be apparent to those skilled in the software art.
While various embodiments of the present invention have been described above, it should be understood that they have been presented by way of example, and not limitation. It will be apparent to persons skilled in the relevant art that various changes in form and detail can be made therein without departing from the spirit and scope of the invention.
The present invention has been described above with the aid of functional building blocks illustrating the performance of specified functions and relationships thereof. The boundaries of these functional building blocks have often been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed. Any such alternate boundaries are thus within the scope and spirit of the invention.
The foregoing description of the present invention has been provided for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise forms disclosed. The breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments. Many modifications and variations will be apparent to the practitioner skilled in the art. The modifications and variations include any relevant combination of the disclosed features. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, thereby enabling others skilled in the art to understand the invention for various embodiments and with various modifications that are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the following claims and their equivalence.
Number | Name | Date | Kind |
---|---|---|---|
5717952 | Christiansen et al. | Feb 1998 | A |
6041053 | Douceur et al. | Mar 2000 | A |
6070219 | McAlpine et al. | May 2000 | A |
6131163 | Wiegel | Oct 2000 | A |
6163539 | Alexander et al. | Dec 2000 | A |
6269401 | Fletcher et al. | Jul 2001 | B1 |
6477643 | Vorbach et al. | Nov 2002 | B1 |
6594775 | Fair | Jul 2003 | B1 |
6600721 | Edholm | Jul 2003 | B2 |
6714960 | Bitar et al. | Mar 2004 | B1 |
6757731 | Barnes et al. | Jun 2004 | B1 |
6771595 | Gilbert et al. | Aug 2004 | B1 |
6831893 | Ben Nun et al. | Dec 2004 | B1 |
6859841 | Narad et al. | Feb 2005 | B2 |
6944168 | Paatela et al. | Sep 2005 | B2 |
6985937 | Keshav et al. | Jan 2006 | B1 |
7046665 | Walrand et al. | May 2006 | B1 |
7111303 | Macchiano et al. | Sep 2006 | B2 |
7120152 | Park | Oct 2006 | B2 |
7146431 | Hipp et al. | Dec 2006 | B2 |
7177311 | Hussain et al. | Feb 2007 | B1 |
7200704 | Njoku et al. | Apr 2007 | B2 |
7260102 | Mehrvar et al. | Aug 2007 | B2 |
7313142 | Matsuo et al. | Dec 2007 | B2 |
7450498 | Golia et al. | Nov 2008 | B2 |
7480302 | Choi | Jan 2009 | B2 |
7502884 | Shah et al. | Mar 2009 | B1 |
7561531 | Lewites et al. | Jul 2009 | B2 |
7613132 | Tripathi et al. | Nov 2009 | B2 |
7620955 | Nelson | Nov 2009 | B1 |
7633955 | Saraiya et al. | Dec 2009 | B1 |
7688838 | Aloni et al. | Mar 2010 | B1 |
7694298 | Goud et al. | Apr 2010 | B2 |
7730205 | Rothman et al. | Jun 2010 | B2 |
7730486 | Herington | Jun 2010 | B2 |
7761617 | Seigneret et al. | Jul 2010 | B2 |
7782868 | Hsieh et al. | Aug 2010 | B2 |
7827598 | Moran et al. | Nov 2010 | B2 |
7865781 | Fox et al. | Jan 2011 | B2 |
7877524 | Annem et al. | Jan 2011 | B1 |
7885257 | Droux et al. | Feb 2011 | B2 |
8031709 | Alexander, Jr. | Oct 2011 | B2 |
8073990 | Baron et al. | Dec 2011 | B1 |
8295275 | Mann | Oct 2012 | B2 |
8358651 | Kadosh et al. | Jan 2013 | B1 |
8370530 | Tripathi et al. | Feb 2013 | B2 |
8396514 | Adams | Mar 2013 | B2 |
8848412 | Yeung et al. | Sep 2014 | B1 |
20020013861 | Adiletta et al. | Jan 2002 | A1 |
20020052972 | Yim | May 2002 | A1 |
20020080721 | Tobagi et al. | Jun 2002 | A1 |
20030037154 | Poggio et al. | Feb 2003 | A1 |
20030041216 | Rosenbluth et al. | Feb 2003 | A1 |
20030120772 | Husain et al. | Jun 2003 | A1 |
20030140196 | Wolrich et al. | Jul 2003 | A1 |
20040015966 | MacChiano et al. | Jan 2004 | A1 |
20040130961 | Kuo et al. | Jul 2004 | A1 |
20040199808 | Freimuth et al. | Oct 2004 | A1 |
20040202182 | Lund et al. | Oct 2004 | A1 |
20040210623 | Hydrie et al. | Oct 2004 | A1 |
20040267866 | Carollo et al. | Dec 2004 | A1 |
20050018601 | Kalkunte | Jan 2005 | A1 |
20050111455 | Nozue et al. | May 2005 | A1 |
20050135243 | Lee et al. | Jun 2005 | A1 |
20050138620 | Lewites | Jun 2005 | A1 |
20050182853 | Lewites et al. | Aug 2005 | A1 |
20050251802 | Bozek et al. | Nov 2005 | A1 |
20060041667 | Ahn et al. | Feb 2006 | A1 |
20060045088 | Nguyen | Mar 2006 | A1 |
20060045089 | Bacher et al. | Mar 2006 | A1 |
20060045109 | Blackmore et al. | Mar 2006 | A1 |
20060070066 | Grobman | Mar 2006 | A1 |
20060092928 | Pike et al. | May 2006 | A1 |
20060174324 | Zur et al. | Aug 2006 | A1 |
20060206300 | Garg et al. | Sep 2006 | A1 |
20060206602 | Hunter et al. | Sep 2006 | A1 |
20060218556 | Nemirovsky | Sep 2006 | A1 |
20060233168 | Lewites et al. | Oct 2006 | A1 |
20060236063 | Hausauer et al. | Oct 2006 | A1 |
20060248229 | Saunderson et al. | Nov 2006 | A1 |
20060253619 | Torudbakken et al. | Nov 2006 | A1 |
20070019646 | Bryant et al. | Jan 2007 | A1 |
20070047536 | Scherer et al. | Mar 2007 | A1 |
20070078988 | Miloushev et al. | Apr 2007 | A1 |
20070083723 | Dey et al. | Apr 2007 | A1 |
20070101323 | Foley et al. | May 2007 | A1 |
20070183418 | Riddoch et al. | Aug 2007 | A1 |
20070244937 | Flynn et al. | Oct 2007 | A1 |
20070244972 | Fan | Oct 2007 | A1 |
20070288720 | Choletti et al. | Dec 2007 | A1 |
20080002683 | Droux et al. | Jan 2008 | A1 |
20080005748 | Mathew et al. | Jan 2008 | A1 |
20080019365 | Tripathy et al. | Jan 2008 | A1 |
20080022016 | Tripathy et al. | Jan 2008 | A1 |
20080043765 | Belgaied et al. | Feb 2008 | A1 |
20080144635 | Carollo et al. | Jun 2008 | A1 |
20080171550 | Zhao | Jul 2008 | A1 |
20080192648 | Galles | Aug 2008 | A1 |
20080222734 | Redlich et al. | Sep 2008 | A1 |
20080225853 | Melman et al. | Sep 2008 | A1 |
20080225875 | Wray et al. | Sep 2008 | A1 |
20080235755 | Blaisdell et al. | Sep 2008 | A1 |
20080239945 | Gregg | Oct 2008 | A1 |
20080253379 | Sasagawa | Oct 2008 | A1 |
20080270599 | Tamir et al. | Oct 2008 | A1 |
20090006593 | Cortes | Jan 2009 | A1 |
20090125752 | Chan et al. | May 2009 | A1 |
20090150576 | Madruga et al. | Jun 2009 | A1 |
20090150883 | Tripathi et al. | Jun 2009 | A1 |
20090187679 | Puri | Jul 2009 | A1 |
20090193216 | Melvin | Jul 2009 | A1 |
20090265299 | Hadad et al. | Oct 2009 | A1 |
20090328073 | Tripathi | Dec 2009 | A1 |
20100046531 | Louati et al. | Feb 2010 | A1 |
20100332698 | Muller | Dec 2010 | A1 |
20110019574 | Malomsoky et al. | Jan 2011 | A1 |
20110080830 | Ko et al. | Apr 2011 | A1 |
20110149966 | Pope et al. | Jun 2011 | A1 |
20110161580 | Shah et al. | Jun 2011 | A1 |
20110161619 | Kaminski et al. | Jun 2011 | A1 |
20120017265 | Twitchell, Jr. | Jan 2012 | A1 |
20120044948 | Nachum et al. | Feb 2012 | A1 |
20120207158 | Srinivasan et al. | Aug 2012 | A1 |
20120311597 | Manula | Dec 2012 | A1 |
20130268700 | Fuhs et al. | Oct 2013 | A1 |
20150007187 | Shows | Jan 2015 | A1 |
20150127762 | Srinivasan et al. | May 2015 | A1 |
Number | Date | Country |
---|---|---|
2367728 | Apr 2002 | GB |
0051004 | Aug 2000 | WO |
2005057318 | Jun 2005 | WO |
2008093174 | Aug 2008 | WO |
Entry |
---|
European Patent Office, International Searching Authority, International Search Report and Written Opinion dated Mar. 16, 2015 for International Application No. PCT/US2014/059749, 13 pages. |
United States Patent and Trademark Office, Office Action mailed Mar. 31, 2016 for U.S. Appl. No. 14/072,597, 16 pages. |
International Report on Patentability issued in PCT/US2012/020746 mailed Aug. 29, 2013, 7 pages. |
International Search Report and Written Opinion for PCT/US2012/020746 dated Mar. 13, 2012, 9 pages. |
Trapeze, Trapeze Overview, Jan. 1, 1998, USENIX, retrieved from the Internet, <usenix.org/publications/library/proceedings/usenix98/full—papers/anderson/anderson—html/node4.html>, 2 pages. |
Goldenberg, D. et al., Zero Copy Sockets Direct Protocol over InfiniBand—Preliminary Implementation and Performance Analysis, Proceedings of the 13th Symposium on High Performance Interconnects, Piscataway, NJ, Aug. 17-19, 2005, pp. 128-137, 10 pages. |
I/O Virtualization Using Mellanox InfiniBand and Channel I/O Virtualization (CIOV) Technology, XP-002541674, 2007, retrieved from the Internet, <http://www.mellanox.com/pdf/whitepapers/WP—Virtualize—with—IB.pdf>, pp. 1-16, 16 pages. |
InfiniBand Software Stack, XP-002541744, Jan. 1, 2006, retrieved from the Internet, <http://download.microsoft.com/download/c/3/1/c318044c-95e8-4df9-a6af-81cdcb3c53c5/Mellanox%20Technologies%20-%20Infiniband%20Software%20Stack%20-%20WinIB%20-%20external.PDF>, pp. 1-2, 2 pages. |
Wheeler, B., 10 Gigabit Ethernet in Servers: Benefits and Challenges, XP-002541745, Jan. 2005, retrieved rom the Internet, <http://www.hp.com/products1/serverconnectivity/adapters/ethernet/10gbe/infolibrary/10GbE—White—Paper.pdf>, 8 pages. |
Windows Platform Design Notes: Winsock Direct and Protocol Offload on SANs, XP-002541746, Mar. 3, 2001, retrieved from the Internet, <http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/WinsockDirect-ProtocolOffload.doc>, 8 pages. |
International Search Report from PCT/US2009/048594 dated Sep. 7, 2009, 4 pages. |
Nritten Opinion from PCT/US2009/048594 dated Sep. 7, 2009, 1 page. |
Tripathi, S., Crossbow Architectural Document, Nov. 21, 2006, 19 pages. |
Nordmark, E., IP Instances—Network Isolation Meets Zones, presented at SVOSUG, Oct. 26, 2006, 28 pages. |
Tripathi, S., CrossBow: Network Virtualization and Resource Control, presented at SVOSUG, Aug. 24, 2006, 27 pages. |
Tripathi, S., CrossBow: Network Virtualization and Resource Control, presented at Sun Labs Open House, Jun. 1, 2006, 24 pages. |
Office Action from the United States Patent and Trademark Office for U.S. Appl. No. 11/953,829, mailed Aug. 4, 2010, 30 pages. |
Office Action from the United States Patent and Trademark Office for U.S. Appl. No. 11/953,837, mailed Jun. 11, 2010, 27 pages. |
Office Action from the United States Patent and Trademark Office for Patent Application No. 11/953,839, mailed Aug. 19, 2010, 30 pages. |
Office Action from the United States Patent and Trademark Office for U.S. Appl. No. 12/040,165, mailed Feb. 8, 2010, 40 pages. |
Notice of Allowance from the United States Patent and Trademark Office for U.S. Appl. No. 12/040,165, mailed Oct. 29, 2010, 18 pages. |
Office Action from the United States Patent and Trademark Office for U.S. Appl. No. 12/040,101, mailed May 5, 2010, 39 pages. |
Office Action from the United States Patent and Trademark Office for U.S. Appl. No. 11/953,842, mailed Apr. 30, 2010, 39 pages. |
Final Office Action from the United States Patent and Trademark Office for U.S. Appl. No. 11/953,842, mailed Oct. 15, 2010, 32 pages. |
Office Action from the United States Patent and Trademark Office for U.S. Appl. No. 12/040,105, mailed Nov. 20, 2009, 93 pages. |
Final Office Action from the United States Patent and Trademark Office for U.S. Appl. No. 12/040,105, mailed May 26, 2010, 26 pages. |
Notice of Allowance from the United States Patent and Trademark Office for U.S. Appl. No. 12/040,105, mailed Oct. 5, 2010, 27 pages. |
Office Action from the United States Patent and Trademark Office for U.S. Appl. No. 11/953,843, mailed May 3, 2010, 169 pages. |
Final Office Action from the United States Patent and Trademark Office for U.S. Appl. No. 11/953,843, mailed Oct. 15, 2010, 33 pages. |
Office Action from the United States Patent and Trademark Office for U.S. Appl. No. 12/053,666, mailed Dec. 10, 2009, 36 pages. |
Final Office Action from the United States Patent and Trademark Office for U.S. Appl. No. 12/053,666, mailed Jun. 11, 2010, 27 pages. |
Notice of Allowance from the United States Patent and Trademark Office for U.S. Appl. No. 12/053,666, mailed Oct. 7, 2010, 15 pages. |
Office Action from the United States Patent and Trademark Office for U.S. Appl. No. 12/053,676, mailed Dec. 9, 2009, 41 pages. |
Notice of Allowance from the United States Patent and Trademark Office for U.S. Appl. No. 12/053,676, mailed Jul. 15, 2010, 20 pages. |
Final Office Action from the United States Patent and Trademark Office for U.S. Appl. No. 12/040,101, mailed Dec. 13, 2010, 25 pages. |
Kumar, R., ASI and PCI Express: Complementary Solutions, Dec. 2004, RTC magazine, retrieved from the Internet, <rtcmagazine.com/articles/view/100274>, 5 pages. |
Martinez, R. et al., Providing Quality of Service Over Advanced Switching, 2006, IEEE, retrieved from the Internet, <ieeexplore.ieee.org/xpls/abs—all.jsp?arnumber=1655667&tag=1>, 10 pages. |
Apani, Brave New World, Feb. 1, 2007, iSmile, retrieved from the Internet, <ismile.com/PDFs/Apani—Segmentation—WP.pdf>, 8 pages. |
OpenSolaris, Popuri, OpenSolaris Virtualization Technologies, Feb. 23, 2007, retrieved from the Internet, <hub.opensolaris.org/bin/view/Community+Group+advocacy/techdays%2Darchive%2D06%2D07>, 2 pages. |
International Search Report issued in PCT/US2009/035405 dated Aug. 19, 2009, 3 pages. |
International Preliminary Report on Patentability issued in PCT/US2009/035405, dated Sep. 10, 2010, 9 pages. |
Dovrolis, C. et al., HIP: Hybrid Interrupt—Polling for the Network Interface: ACM SIGOPS Operating Systems Review, vol. 35, Iss. 4, Oct. 2001, 11 pages. |
Tripathi, S., Solaris Networking—The Magic Revealed (Part I), Sunay Tripathi's Solaris Networking Weblog, Nov. 14, 2005, pp. 1-22, 22 pages. |
Tripathi, S., CrossBow: Solaris Network Virtualization and Resource Control, Crossbow Architectural Document, Nov. 21, 2006, 19 pages. |
Nordmark, E. et al., IP Instances Interface Document, PSARC 2006/366, Dec. 28, 2006, 17 pages. |
Nordmark, E., IP Instances Design Document, PSARC 2006/366, Dec. 21, 2006, 38 pages. |
Tripathi, S., CrossBow: Solaris Network Virtualization & Resource Control, CrossBow Overview Document, Aug. 23, 2006, 12 pages. |
Nordmark, E., IP Instances—Network Isolation Meets Zones, presented at the SVOSUG meeting, Oct. 26, 2006, 28 pages. |
Tripathi, S., CrossBow: Network Virtualization and Resource Control, presented at the SVOSUG meeting, Aug. 24, 2006, 28 pages. |
Tripathi, S., Crossbow: ReCap, presented at an internal Sun Labs Open House presentation on Jun. 1, 2006, made public Aug. 2006, 23 pages. |
Number | Date | Country | |
---|---|---|---|
20150127869 A1 | May 2015 | US |