Dynamic optimization for IP forwarding performance
First Claim
Patent Images
1. A method, comprising the steps of:
- coupling a network interface controller to a host, the host comprising a processor having a plurality of cores, including a first core and a second core, the network interface controller being configured to transmit and receive data packets over a data network via multiple distinct physical ports that are connected to at least one data network;
upon receiving a packet belonging to a flow from the network via one of the physical ports assigning a first core to store the packet in a receive buffer of a memory having pages, the pages having virtual start addresses;
deciding in the host, responsively to a destination identifier in the packet, to perform a send operation on the packet;
selecting the second core to perform the send operation by excluding the first core from selection;
with the second core, executing the send operation to forward the packet from the host into the at least one data network via another of the physical ports; and
using new packets belonging to the flow as the packet, iterating the steps of;
receiving a packet and storing the packet with the first core; and
with the second core executing new send operations to forward the new packets exclusively via the other physical port.
3 Assignments
0 Petitions
Accused Products
Abstract
A host connected to at least one data network has a processor having a plurality of cores, and a memory. A network interface controller is coupled to the host, and configured to transmit and receive data packets via multiple distinct physical ports. The host and the network interface controller are cooperative upon receiving a packet for storing the packet in a receive buffer of the memory, deciding in the host, responsively to a destination identifier in the packet, to forward the packet from the host to the at least one data network via another one of the physical ports, and selecting one of the cores to perform a send operation.
-
Citations
23 Claims
-
1. A method, comprising the steps of:
-
coupling a network interface controller to a host, the host comprising a processor having a plurality of cores, including a first core and a second core, the network interface controller being configured to transmit and receive data packets over a data network via multiple distinct physical ports that are connected to at least one data network; upon receiving a packet belonging to a flow from the network via one of the physical ports assigning a first core to store the packet in a receive buffer of a memory having pages, the pages having virtual start addresses; deciding in the host, responsively to a destination identifier in the packet, to perform a send operation on the packet; selecting the second core to perform the send operation by excluding the first core from selection; with the second core, executing the send operation to forward the packet from the host into the at least one data network via another of the physical ports; and using new packets belonging to the flow as the packet, iterating the steps of; receiving a packet and storing the packet with the first core; and with the second core executing new send operations to forward the new packets exclusively via the other physical port. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. An apparatus, comprising:
-
a host connected to at least one data network, the host comprising a processor having a plurality of cores, including a first core and a second core, and a memory having pages, the pages having virtual start addresses; a network interface controller coupled to the host, and configured to transmit and receive data packets over the at least one data network via multiple distinct physical ports, the host and the network interface controller cooperative for; upon receiving a packet belonging to a flow from the at least one data network via one of the physical ports assigning the first core to store the packet in a receive buffer of the memory; deciding in the host, responsively to a destination identifier in the packet, to perform a send operation on the packet; selecting the second core to perform the send operation, by excluding the first core from selection; with the second core, executing the send operation to forward the packet from the host into the at least one data network via another of the physical ports; and using new packets belonging to the flow as the packet, iterating the steps of; receiving a packet and storing the packet with the first core; and with the second core executing new send operations to forward the new packets exclusively via the other physical port. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A method, comprising the steps of:
-
coupling a network interface controller to a host, the host comprising a processor having a plurality of cores, the network interface controller being configured to transmit and receive data packets over a data network via multiple distinct physical ports that are connected to at least one data network; upon receiving a packet from the network via one of the physical ports storing the packet in a receive buffer of a memory having pages, the pages having virtual start addresses; inserting a unique signature in the receive buffer; and determining that a memory element of the packet and the receive buffer share the unique signature; and deciding in the host, responsively to a destination identifier in the packet, to perform a send operation on the packet to forward the packet from the host to the at least one data network via another one of the physical ports; and selecting one of the cores to perform the send operation, by referencing the receive buffer containing the memory element to forward the packet while avoiding copying the receive buffer to a send buffer. - View Dependent Claims (22, 23)
-
Specification