Method and apparatus for a shared I/O network interface controller
First Claim
1. A shared network interface controller (NIC) to allow a plurality of computer servers running multiple operating system domains to interface to an Ethernet network, the controller comprising:
- a bus interface to couple the controller to a packet based load-store serial link, said load-store serial link coupling each of the plurality of computer servers to the controller such that the controller is in a load-store domain of each of the computer servers;
server identification logic, coupled to said bus interface, including a plurality of registers used for identifying packets received by said bus interface with ones of the plurality of computer servers;
buffering logic, coupled to said server identification logic, to store said packets received by said bus interface, along with tags which associate said packets with ones of the plurality of computer servers;
association logic, coupled to said buffering logic, for determining MAC addresses for said packets utilizing said tags; and
transmit/receive logic, coupled to the Ethernet network, and to said association logic, for transmitting said packets to the Ethernet network, and for receiving packets from said Ethernet network;
wherein by associating packets with ones of the plurality of computer servers, and buffering the packets between the plurality of computer servers and the Ethernet network, the shared network interface controller provides an Ethernet interface for all of the plurality of computer servers via said packet based load-store serial link,wherein said server identification logic including the plurality of registers comprises respective control status registers for each of the operating system domains, the control status registers of each operating system domain being addressable by the respective operating system domain.
4 Assignments
0 Petitions
Accused Products
Abstract
A shared network interface controller (NIC) interfaces a plurality of operating system domains as part of the load-store architecture of the operating system domains. A bus interface couples the NIC to a load-store domain bus (such as PCI-Express), using header information to associate data on the bus with an originating operating system domain. Transmit/receive logic connects the NIC to the network. Association logic allows the NIC to designate, and later lookup which destination MAC address (on the Ethernet side) is associated with which operating system domain. Descriptor register files and Control Status Registers (CSR'"'"'s) specific to an operating system domain are duplicated and made available for each domain. Several direct memory access (DMA) engines are provided to improve throughput. Packet replication logic, filters (perfect and hash) and VLAN tables are used for looping back packets originating from one operating system domain to another and other operations.
205 Citations
18 Claims
-
1. A shared network interface controller (NIC) to allow a plurality of computer servers running multiple operating system domains to interface to an Ethernet network, the controller comprising:
-
a bus interface to couple the controller to a packet based load-store serial link, said load-store serial link coupling each of the plurality of computer servers to the controller such that the controller is in a load-store domain of each of the computer servers; server identification logic, coupled to said bus interface, including a plurality of registers used for identifying packets received by said bus interface with ones of the plurality of computer servers; buffering logic, coupled to said server identification logic, to store said packets received by said bus interface, along with tags which associate said packets with ones of the plurality of computer servers; association logic, coupled to said buffering logic, for determining MAC addresses for said packets utilizing said tags; and transmit/receive logic, coupled to the Ethernet network, and to said association logic, for transmitting said packets to the Ethernet network, and for receiving packets from said Ethernet network; wherein by associating packets with ones of the plurality of computer servers, and buffering the packets between the plurality of computer servers and the Ethernet network, the shared network interface controller provides an Ethernet interface for all of the plurality of computer servers via said packet based load-store serial link, wherein said server identification logic including the plurality of registers comprises respective control status registers for each of the operating system domains, the control status registers of each operating system domain being addressable by the respective operating system domain. - View Dependent Claims (2, 3, 4, 5, 6, 12)
-
-
7. A method for sharing a network interface controller by a plurality of operating system domains, the method comprising:
-
providing a load-store domain link between the controller and the plurality of operating system domains, such that the controller is in a load-store domain of the operating system domains; providing operating system domain (OSD) identification for data transmitted over the load-store domain link; providing an interface between the controller and a network; buffering data between the load-store domain link and the network; associating the buffered data with the plurality of operating system domains, said associating utilizing association logic to associate MAC addresses within the buffered data with ones of the plurality of operating system domains; and managing respective control status registers for each of the operating system domains, the control status registers of each operating system domain being addressable by the respective operating system domain. - View Dependent Claims (8, 9, 10, 11)
-
-
13. A shared network interface controller (NIC) to allow a plurality of computer servers running multiple operating system domains to interface to an Ethernet network, the controller comprising:
-
a bus interface to couple the controller to a packet based load-store serial link, said load-store serial link coupling each of the plurality of computer servers to the controller such that the controller is in a load-store domain of each of the computer servers; server identification logic, coupled to said bus interface, including a plurality of registers used for identifying packets received by said bus interface with ones of the plurality of computer servers; buffering logic, coupled to said server identification logic, to store said packets received by said bus interface, along with tags which associate said packets with ones of the plurality of computer servers; association logic, coupled to said buffering logic, for determining MAC addresses for said packets utilizing said tags; and transmit/receive logic, coupled to the Ethernet network, and to said association logic, for transmitting said packets to the Ethernet network, and for receiving packets from said Ethernet network; wherein by associating packets with ones of the plurality of computer servers, and buffering the packets between the plurality of computer servers and the Ethernet network, the shared network interface controller provides an Ethernet interface for all of the plurality of computer servers via said packet based load-store serial link, wherein said server identification logic including the plurality of registers comprises a plurality of control status registers which are addressable by each of the multiple operating system domains. - View Dependent Claims (14, 15, 16, 17, 18)
-
Specification