Method and apparatus for a shared I/O network interface controller
First Claim
1. A shareable network interface controller to be shared within the load-store architecture of a plurality of operating system domains, comprising:
- transmit/receive logic for coupling the controller to a network to transmit/receive network communication;
bus interface and operating system domain identification logic, for interfacing the controller to the plurality of operating system domains (OSD'"'"'s), and for associating OSD communication to and from said bus interface with ones of the plurality of OSD'"'"'s;
association logic, coupled to said transmit/receive logic, for associating said network communication with ones of the plurality of OSD'"'"'s;
wherein by associating said network communication with ones of the plurality of OSD'"'"'s, and associating said OSD communication with ones of the plurality of OSD'"'"'s, the shared controller provides communication between the plurality of OSD'"'"'s and said network.
6 Assignments
0 Petitions
Accused Products
Abstract
An apparatus and method is provided for interfacing a number of computer servers (or operating system domains) to a network such as Ethernet through a shared network interface controller (NIC) which is part of the load-store architecture of the operating system domains. The network interface controller includes a bus interface to couple the controller to a load-store domain bus (such as PCI-Express), the bus including header information to associate data on the bus with an originating operating system domain. The controller also includes transmit/receive logic to connect it to the network. In between the bus interface and the transmit/receive logic is buffering to temporarily store data coming either from the operating system domains or the network. The buffered data is tagged within an identifier to associate it with one or more of the operating system domains. Association logic is further provided to allow the controller to designate, and later lookup which destination MAC address (on the Ethernet side) is associated with which operating system domain. Control Status Registers (CSR'"'"'s) specific to an operating system domain are duplicated and made available for each domain. Descriptor Register files are also duplicated for each operating system domain. A number of direct memory access (DMA) engines are provided to improve throughput. And, packet replication logic, along with filters (perfect and hash) and VLAN tables are used for looping back packets originating from one of the operating system domains to one or more of the other operating system domains, for server to server communication, multicast and broadcast operations.
-
Citations
109 Claims
-
1. A shareable network interface controller to be shared within the load-store architecture of a plurality of operating system domains, comprising:
-
transmit/receive logic for coupling the controller to a network to transmit/receive network communication;
bus interface and operating system domain identification logic, for interfacing the controller to the plurality of operating system domains (OSD'"'"'s), and for associating OSD communication to and from said bus interface with ones of the plurality of OSD'"'"'s;
association logic, coupled to said transmit/receive logic, for associating said network communication with ones of the plurality of OSD'"'"'s;
wherein by associating said network communication with ones of the plurality of OSD'"'"'s, and associating said OSD communication with ones of the plurality of OSD'"'"'s, the shared controller provides communication between the plurality of OSD'"'"'s and said network. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49)
-
-
50. A network interface controller (NIC) which provides an interface between a network and a plurality of operating system domains, the controller existing within the load-store domain of each of the plurality of operating system domains (OSD'"'"'s), the controller comprising:
-
a bus interface between the plurality of operating system domains and the controller;
a network interface between the network and the controller; and
association logic, coupled to both said bus interface and said network interface to associate data coming from the network with at least one of the plurality of operating system domains. - View Dependent Claims (51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83)
-
-
84. A shared network interface controller (NIC) to allow a plurality of computer servers 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;
server identification logic, coupled to said bus interface, 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. - View Dependent Claims (85, 86, 87, 88, 89)
-
-
90. A blade server environment comprising:
-
a plurality of blade servers;
a shared switch for coupling to the plurality of blade servers, and for providing communication between the plurality of blade servers and a downstream endpoint, the downstream endpoint comprising a shared network interface controller, said controller comprising;
a bus interface for coupling said controller to said shared switch;
identification logic, for determining which of the plurality of blade servers is associated with data packets received by said controller;
transmit/receive logic, for coupling said controller to an Ethernet network;
buffer logic, coupled to said bus interface and to said transmit/receive logic, for buffering said data packets received by said controller, either from said shared switch, or from said Ethernet network; and
association logic, coupled to said buffer logic, for determining from a MAC address, which of said blade servers should be associated with said data packets.
-
-
91. 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;
providing 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; and
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. - View Dependent Claims (92, 93, 94, 95)
-
-
96. A method for correlating Ethernet packets within a shared network interface controller with a plurality of upstream operating system domains, comprising:
-
receiving the packets into the shared network interface controller;
associating the packets with the plurality of upstream operating system domains by correlating destination MAC addresses within the packets with ones of the plurality of upstream operating system domains;
caching descriptors for each of the plurality of upstream operating system domains which define where in their memories the packets are to be transferred; and
transferring the packets, per the descriptors, to the plurality of upstream operating system domains via a load-store link which allows the packets to be tagged with information which associates the packets with their upstream operating system domain.
-
-
97. A method for transmitting packets from a plurality of operating system domains to an Ethernet network thru a shared network interface controller, comprising:
-
requesting a packet transmit from one of the plurality of operating system domains to the controller;
tagging the request with an OSD header to associate the request with its operating system domain;
transmitting the request to the shared network interface controller;
within the shared network interface controller, correlating the request with its operating system domain;
utilizing the OSD header for the request to determine associated descriptors for the request;
transferring data from the operating system domain, corresponding to the request utilizing the associated descriptors;
buffering the transferred data; and
transmitting the buffered data to the Ethernet network.
-
-
98. A shared network interface controller within the load-store domain of a plurality of operating system domains, for interfacing the plurality of operating system domains to a network, the controller comprising:
-
a bus interface, for interfacing the controller to a plurality of operating system domains;
transmit/receive logic, for interfacing the controller to a network; and
packet replication logic, coupled to said bus interface, for detecting whether packets received from a first one of the plurality of operating system domains is destined for a second one of the plurality of operating system domains, and if said packets are destined for said second one of the plurality of operating system domains, said logic causing said packets to be transferred to said second one of the plurality of operating system domains. - View Dependent Claims (99, 100, 101, 102, 103, 104)
-
-
105. A method for determining a loopback condition within a shared network interface controller that is coupled to first and second operating system domains within their load-store architecture, the method comprising:
-
determining whether a packet transmitted by the first operating system domain is destined for the second operating system domain, the first and second operating system domains interfaced to each other, and to a network, through the shared network interface controller;
if the packet is destined for the second operating system domain, forwarding the packet to the second operating system domain, and not forwarding the packet to the network; and
if the packet is not destined for the second operating system domain, forwarding the packet to the network. - View Dependent Claims (106, 107, 108, 109)
-
Specification