Patent ID: 7356608

Claim:
A shared I/O subsystem for providing network protocol management for a plurality of computer systems comprising: a plurality of I/O interfaces, each of the I/O interfaces operatively coupling one or more of the computer systems to the shared I/O subsystem; the plurality of computer systems including a plurality of initiating servers that initiate I/O requests; an I/O management link operatively interconnecting the I/O interfaces; and a link layer switch communicatively coupled to each of the I/O interfaces, where the link layer switch receives a data packet from one of the I/O interfaces and directs the data packet to one or more of the other ones of the I/O interfaces; wherein the I/O interfaces form a local area network within the shared I/O subsystem; and at least one of the I/O interfaces includes: (a) a plurality of virtual ports where each virtual port is operationally coupled to a virtual network interface card (NIC) via a virtual I/O bus, where the virtual NIC is executed by a computer system coupled to the I/O interface; (b) a target channel adapter (TCA) that communicates with a host channel adapter (HCA) of the computer system; (c) a switching function that uses a forwarding table for routing inbound packets received from a network and destined for one or more of the plurality of computer systems and for routing outbound packets originating from one or more of the plurality of computer systems destined for a network device or a virtual port of an I/O interface; and (d) a shared physical NIC that is shared by the plurality of virtual NICs of the plurality of computer systems to send and receive network packets via a network link where the virtual NIC on an initiating server allows the initiating server to communicate via the shared physical NIC as if the shared physical NIC was dedicated only to the initiating server; wherein the virtual NIC receives an outbound packet from a software stack that is executed above the virtual NIC stack in a computer system from among the plurality of computer systems and the virtual NIC: (a) encapsulates the outbound packet into a combination of send/receive and remote direct memory access (RDMA) operations that forms the virtual I/O bus between each virtual port and the virtual NIC; and (b) sends the encapsulated operations to the HCA and the HCA then sends the encapsulated operations to the TCA; and the encapsulated send/receive and RDMA operations are reassembled into an outgoing packet by the virtual port associated with the virtual NIC; and the virtual port forwards the outgoing packet to the switching function for delivery to another virtual port or to the shared NIC for delivery to another network device.