Shared network-interface controller (NIC) using advanced switching (AS) turn-pool routing field to select from among multiple contexts for multiple processors
First Claim
1. A shared network interface controller (NIC) comprising:
- an external-network connection that sends external packets and receives external packets over an external network using an external-network protocol;
a local network connection for sending and receiving local packets to and from a first processor and to and from a second processor on a local network using a local-network protocol;
wherein the local packets include a routing specifier that specifies a route through the local network;
a protocol converter for embedding data from external packets received from the external network inside local packets sent over the local network;
a first set of registers that include a first command register to command transmission of an external packet that contains data from the first processor and a first transmit-pointer register for locating data to transmit in the external packet and a first receive-pointer register for indicating a location to store data from external packets received;
wherein local packets from the first processor received by the local network connection of the shared NIC have a first routing value of the routing specifier that specifies a first route between the first processor and the shared NIC;
a second set of registers that include a second command register to command transmission of an external packet that contains data from the second processor and a second transmit-pointer register for locating data to transmit in the external packet and a second receive-pointer register for indicating a location to store data from external packets received;
wherein local packets from the second processor received by the local network connection of the shared NIC have a second routing value of the routing specifier that specifies a second route between the second processor and the shared NIC;
wherein the first routing value and the second routing value are different values; and
a context controller that selects the first set of registers for access in response to the local packets when the local packets contain the first routing value;
the context controller selecting the second set of registers for access in response to the local packets when the local packets contain the second routing value,whereby the external network connection is shared by the first and second processors and the first and second set of registers are selected for access by the first or second routing values for the local network.
4 Assignments
0 Petitions
Accused Products
Abstract
A network connection is transparently shared among two or more processors. A shared network interface controller (NIC) has two or more sets of context registers that may include Ethernet command and pointer registers. Each set of context registers is accessed by a different processor. The processors are separated from the shared NIC by an Advanced Switching (AS) network. AS packets to write the context registers are embedded in AS packets that contain turnpool information that specifies a route through the AS network. Turnpools for AS packets from the different processors are unique and used to indicate which set of context registers to access. Each turnpool-identified context is assigned a different external network (Ethernet) address. External packets received by the shared NIC from the external network are sent inside AS packets over the AS network to the correct processor by associating the packet'"'"'s external network address with a turnpool-context.
124 Citations
20 Claims
-
1. A shared network interface controller (NIC) comprising:
-
an external-network connection that sends external packets and receives external packets over an external network using an external-network protocol; a local network connection for sending and receiving local packets to and from a first processor and to and from a second processor on a local network using a local-network protocol; wherein the local packets include a routing specifier that specifies a route through the local network; a protocol converter for embedding data from external packets received from the external network inside local packets sent over the local network; a first set of registers that include a first command register to command transmission of an external packet that contains data from the first processor and a first transmit-pointer register for locating data to transmit in the external packet and a first receive-pointer register for indicating a location to store data from external packets received; wherein local packets from the first processor received by the local network connection of the shared NIC have a first routing value of the routing specifier that specifies a first route between the first processor and the shared NIC; a second set of registers that include a second command register to command transmission of an external packet that contains data from the second processor and a second transmit-pointer register for locating data to transmit in the external packet and a second receive-pointer register for indicating a location to store data from external packets received; wherein local packets from the second processor received by the local network connection of the shared NIC have a second routing value of the routing specifier that specifies a second route between the second processor and the shared NIC; wherein the first routing value and the second routing value are different values; and a context controller that selects the first set of registers for access in response to the local packets when the local packets contain the first routing value;
the context controller selecting the second set of registers for access in response to the local packets when the local packets contain the second routing value,whereby the external network connection is shared by the first and second processors and the first and second set of registers are selected for access by the first or second routing values for the local network. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method for sharing a network connection comprising:
-
transmitting external packets by; receiving from an inter-processor network a processor packet from a processor, the processor packet having a source-routing field that indicates a route through the inter-processor network; selecting as a selected register set a first register set when the source-routing field identifies a first route from a first processor, or a second register set when the source-routing field identifies a second route from a second processor; writing to the selected register set in response to a data payload in the processor packet; when a transmit command is written to the selected register set, reading a transmit pointer from the selected register set, and fetching transmit data located by using the transmit pointer to form transmit packets; finding an external network address associated with the selected register set and including the external network address in the transmit packets as a source address; transmitting the transmit packets over an external network connection that is external to the inter-processor network; receiving external packets by; receiving from the external network connection receive packets that contain a received external network address; searching for a matching register set that is associated with the received external network addresses; reading a receive pointer from the matching register set; and writing received data from the receive packets to a location indicated by the receive pointer by encapsulating the received data and the receive pointer inside processor packets that have a source-routing field associated with the matching register set; wherein each register set is associated with a different source-routing field and a different received external network address, whereby source routing fields and external network addresses are associated with registers sets for different processors on the inter-processor network. - View Dependent Claims (13, 14, 15, 16)
-
-
17. A shared peripheral comprising:
-
local network means for sending and receiving local packets over a local network to and from a first processor and to and from a second processor; routing extraction means for reading a routing value from local packets received by the local network means over the local network; search means, coupled to the routing extraction means, for searching for a matching association having a stored routing value that matches the routing value received; a plurality of register sets, each register set for access by a different processor on the local network; context controller means, coupled to the search means, for selecting a selected registers set in the plurality of register sets in response to the matching association; arbitration means for arbitrating operation control of a peripheral device in response to peripheral commands written to the plurality of registers sets; and reply means, responsive to operation of the peripheral device by a selected association, for generating reply local packets to a selected processor on the local network, the reply local packets having a selected routing value associated with the selected association, the selected routing value specifying a route through the local network to the selected processor, whereby use of the peripheral device is shared by processors identified by routing values for routes to the processors through the local network. - View Dependent Claims (18, 19, 20)
-
Specification