IP Library Granted Patent US 7,613,813
Granted Patent B2
US 7,613,813 · App. 11/225,373 · Granted Nov 3, 2009

Method and apparatus for reducing host overhead in a socket server implementation

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,613,813
App. No.
11/225,373
Granted
Nov 3, 2009
Kind
B2
Abstract

A network application executing on a host system provides a list of application buffers in host memory stored in a queue to a network services processor coupled to the host system. The application buffers are used for storing data transferred on a socket established between the network application and a remote network application executing in a remote host system. Using the application buffers, data received by the network services processor over the network is transferred between the network services processor and the application buffers. After the transfer, a completion notification is written to one of the two control queues in the host system. The completion notification includes the size of the data transferred and an identifier associated with the socket. The identifier identifies a thread associated with the transferred data and the location of the data in the host system.

Claims (28)

1. A network processor comprising:

a host system with a bus interface; and

a Network Interface Card (NIC) capable of handling multiple network protocols;

the NIC managing a queue system for sockets established between an application executing in host application memory and another application executing in a remote host coupled to a network, the NIC terminating network protocols on behalf of the host system and reducing overhead data copy in a kernel by transferring data asynchronously directly to the host application memory, the queue system storing a unique identifier for a process identifier associated with each corresponding socket, the kernel informing a waiting process in the host system that data has been written to the host application memory based on the process identifier stored in the queue system.

2. The network processor of claim 1 , wherein the sockets include a Transmission Control Protocol socket.

3. The network processor of claim 1 , wherein the sockets include a User Datagram Protocol socket.

4. The network processor of claim 1 , wherein data transferred over the network is transferred directly between local memory and application space in host memory in the host system.

5. The network processor of claim 1 , wherein the queue system includes a ring buffer and address pointers for managing the queue system are stored in local memory.

6. A computer implemented method for transferring data between an application executing in a host system and a remote application executing in a remote host system over a socket, the method comprising:

sharing by a plurality of processors a local memory for storing data transferred over a network;

managing a per flow queue for a socket connection established between the application executing in host application memory and the remote application executing in the remote host system coupled to the network, storing a unique identifier for a process identifier associated with the socket in a global queue; and

reducing overhead of data copy by transferring data asynchronously directly between the host application memory and local memory, an indication being received by a kernel in the host system indicating that data has been written to application memory using the global queue, the indication being sent to a waiting process by the kernel based on a process identifier stored in the global queue.

7. The method of claim 6 , wherein the socket is a Transmission Control Protocol socket.

8. The method of claim 6 , wherein the socket is a User Datagram Protocol socket.

9. The method of claim 6 , wherein data transferred over the network is transferred directly between local memory and application space in host memory in the host system.

10. The method of claim 6 , wherein the queues are implemented as a ring buffer and address pointers for managing the queues are stored in local memory.

11. A network processor comprising:

local memory shared by the plurality of processors for storing data transferred over a network coupled to the network processor; and

interface means for managing a queue system in host memory for a socket established between an application executing in the host application memory in a host system and a remote application executing in a remote host system coupled to the network, a global queue storing a unique identifier for a process identifier associated with the socket, the interface means transferring data asynchronously directly between the host application memory and local memory to reduce overhead of data copy, an indication being received by a waiting process kernel in the host system indicating that data has been written to the host application memory based on a process identifier stored in the global queue, and the kernel directly informing a waiting process that data are available based on the process identifier.

12. A network processor system comprising:

a plurality of processors, a first processor executing an application and a second processor executing an operating system; and

a local memory shared by the plurality of processors for handling network protocols and storing data transferred over a network coupled to the network processor system, the second processor managing a per flow queue for a socket established between the application and another application executing in a remote host coupled to the network, a global queue storing a unique identifier for the socket, the data being transferred directly between the application buffers and network buffers in the local memory to reduce overhead of data copy.

13. A networking system comprising:

a host system executing a network application, the host system comprising:

a host networking stack;

a processor networking stack;

a network interface card (NIC) capable of handling multiple network protocols; and

a socket switch, the socket switch directing network service calls from the application through the host networking stack or the processor networking stack to the NIC based on an Internet Protocol address included in a network service call, the NIC terminating network protocols on behalf of the host system and reducing overhead data copy in a kernel by transferring data asynchronously directly to the host application memory.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CERTIFICATE OF CONVERSION AND CERTIFICATE OF FORMATION Recorded Oct 2, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047185/0422 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
SECURITY AGREEMENT Recorded Aug 17, 2016
From: CAVIUM, INC.; CAVIUM NETWORKS LLC
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 039715/0449 →
MERGER Recorded Jul 21, 2011
From: CAVIUM NETWORKS, INC.
To: CAVIUM, INC.
Reel/Frame 026632/0672 →
MERGER Recorded Mar 14, 2007
From: CAVIUM NETWORKS, A CALIFORNIA CORPORATION
To: CAVIUM NETWORKS, INC., A DELAWARE CORPORATION
Reel/Frame 019014/0174 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2005
From: HUSSAIN, MUHAMMAD R.; KESSLER, RICHARD E.; MASOOD, FAISAL; SANZONE, ROBERT A.; BADR, IMRAN
To: CAVIUM NETWORKS
Reel/Frame 016972/0089 →