IP Library Granted Patent US 10,972,407
Granted Patent B1
US 10,972,407 · App. 16/681,478 · Granted Apr 6, 2021

Systems and methods for network stack

Inventors: Gleb Kurtsov (San Jose, CA); Adrian Harold Chadd (Oakland, CA); Stanislav Sedov (San Jose, CA)
Assignee: Facebook Technologies, LLC
H04L47/827H04L67/141H04L67/32H04L69/16
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 10,972,407
App. No.
16/681,478
Granted
Apr 6, 2021
Kind
B1
Abstract

In one embodiment, a method includes starting a network-coordination service, a network-interface component, and an application as separate processes within a user space of an operating system of a device; receiving, by the network-coordination service, a request from the application to connect with a host; selecting, by the network-coordination service and in response to the request, the network-interface component to service the requested connection with the host, wherein the network-interface component is associated with a network interface of the device; allocating, by the network-coordination service, a shared memory region for the application and the selected network-interface component, wherein the shared memory region is associated with a reference; and sending, by the network-coordination service, the reference to the application, wherein the reference is configured to be used by the application to access the shared memory region; wherein the shared memory region is configured to be used by the application and the network-interface component to communicate packet data.

Claims (70)

1. A method comprising:

starting a network-coordination service, a network-interface component, and an application as separate processes within a user space of an operating system of a device, wherein the application has permission to open inter-process communication (IPC) channels directly with the network-coordination service and lacks permission to open IPC channels directly with the network-interface component, and the network-coordination service has permission to open IPC channels directly with the network-interface component;

receiving, by the network-coordination service, a request from the application to connect with a host;

selecting, by the network-coordination service and in response to the request, the network-interface component to service the request to connect with the host, wherein the network-interface component is associated with a network interface of the device;

allocating, by the network-coordination service, a shared memory region for the application and the network-interface component, wherein the shared memory region is associated with a reference; and

sending, by the network-coordination service, the reference to the application, wherein the reference is configured to be used by the application to access the shared memory region; wherein the shared memory region is configured to be used by the application and the network-interface component to communicate packet data.

2. The method of claim 1 , wherein the network-interface component comprises a set of per-interface services and a network-interface library, wherein the set of per-interface services includes a first service configured to perform one or more control plane networking operations, and the network-interface library is configured to perform one or more data plane networking operations.

3. The method of claim 1 , wherein the application instantiates a transport protocol library associated with the operating system, the transport protocol library being configured to use the reference to the shared memory region to communicate packet data with the network-interface component.

4. The method of claim 1 , wherein the network-coordination service is configured to manage a plurality of network-interface components, including the network-interface component.

5. The method of claim 4 , further comprising:

accessing, by the network-coordination service, network configuration or network status data associated with the plurality of network-interface components; wherein the selection of the network-interface component is based on the network configuration or network status data.

6. The method of claim 1 , further comprising:

verifying, by the network-coordination service and in response to the request, that the application has permission to connect with the host.

7. The method of claim 1 , further comprising:

requesting, by the network-coordination service and in response to the request, the network-interface component to provide name resolution and address resolution;

generating, by the network-coordination service, one or more tokens associated with the name resolution and the address resolution;

sending, by the network-coordination service, the one or more tokens to the application;

receiving, by the network-interface component, a packet transmission request from the application specifying the one or more tokens; and

determining, by the network-interface component, a destination address for one or more packets by validating the one or more tokens.

8. The method of claim 1 , further comprising:

receiving, by the network-interface component, a packet transmission request from the application specifying a data reference to data stored in the shared memory region;

accessing, by the network-interface component, the data stored in the shared memory region using the data reference;

generating, by the network-interface component, hardware descriptors and one or more packets for the data; and

causing, by the network-interface component, the network interface to transmit the one or more packets using the hardware descriptors.

9. The method of claim 8 , further comprising:

sending, by the network-interface component, an IPC message to the application to notify the application of a status of the transmission of the one or more packets.

10. The method of claim 1 , further comprising:

receiving, by the network-interface component and from the application, an address within the shared memory region for storing incoming packets;

causing, by the network-interface component, an incoming packet for the application to be stored in the shared memory region according to the address; and

sending, by the network-interface component, a message to the application to notify the application that the incoming packet is available in the shared memory region.

11. A system comprising:

one or more processors; and

one or more computer-readable non-transitory storage media coupled to one or more of the processors and comprising instructions operable when executed by one or more of the processors to cause the system to:

start a network-coordination service, a network-interface component, and an application as separate processes within a user space of an operating system of a device, wherein the application has permission to open inter-process communication (IPC) channels directly with the network-coordination service and lacks permission to open IPC channels directly with the network-interface component, and the network-coordination service has permission to open IPC channels directly with the network-interface component;

receive, by the network-coordination service, a request from the application to connect with a host;

select, by the network-coordination service and in response to the request, the network-interface component to service the request to connect with the host, wherein the network-interface component is associated with a network interface of the device;

allocate, by the network-coordination service, a shared memory region for the application and the network-interface component, wherein the shared memory region is associated with a reference; and

send, by the network-coordination service, the reference to the application, wherein the reference is configured to be used by the application to access the shared memory region;

wherein the shared memory region is configured to be used by the application and the network-interface component to communicate packet data.

12. The system of claim 11 , wherein the system is further configured to:

request, by the network-coordination service and in response to the request, the network-interface component to provide name resolution and address resolution;

generate, by the network-coordination service, one or more tokens associated with the name resolution and the address resolution;

send, by the network-coordination service, the one or more tokens to the application;

receive, by the network-interface component, a packet transmission request from the application specifying the one or more tokens; and

determine, by the network-interface component, a destination address for one or more packets based on the one or more tokens.

13. The system of claim 11 , wherein the system is further configured to:

receive, by the network-interface component, a packet transmission request from the application specifying a data reference to data stored in the shared memory region;

access, by the network-interface component, the data stored in the shared memory region using the data reference;

generate, by the network-interface component, hardware descriptors and one or more packets for the data; and

cause, by the network-interface component, the network interface to transmit the one or more packets using the hardware descriptors.

14. The system of claim 11 , wherein the system is further configured to:

receive, by the network-interface component and from the application, an address within the shared memory region for storing incoming packets;

cause, by the network-interface component, an incoming packet for the application to be stored in the shared memory region according to the address; and

send, by the network-interface component, a message to the application to notify the application that the incoming packet is available in the shared memory region.

15. One or more computer-readable non-transitory storage media embodying software that is operable when executed to:

start a network-coordination service, a network-interface component, and an application as separate processes within a user space of an operating system of a device wherein the application has permission to open inter-process communication (IPC) channels directly with the network-coordination service and lacks permission to open IPC channels directly with the network-interface component, and the network-coordination service has permission to open IPC channels directly with the network-interface component;

receive, by the network-coordination service, a request from the application to connect with a host;

select, by the network-coordination service and in response to the request, the network-interface component to service the request to connect with the host, wherein the network-interface component is associated with a network interface of the device;

allocate, by the network-coordination service, a shared memory region for the application and the network-interface component, wherein the shared memory region is associated with a reference; and

send, by the network-coordination service, the reference to the application, wherein the reference is configured to be used by the application to access the shared memory region;

wherein the shared memory region is configured to be used by the application and the network-interface component to communicate packet data.

16. The media of claim 15 , wherein the media is further configured to:

receive, by the network-interface component, a packet transmission request from the application specifying a data reference to data stored in the shared memory region;

access, by the network-interface component, the data stored in the shared memory region using the data reference;

generate, by the network-interface component, hardware descriptors and one or more packets for the data; and

cause, by the network-interface component, the network interface to transmit the one or more packets using the hardware descriptors.

17. The media of claim 15 , wherein the media is further configured to:

receive, by the network-interface component and from the application, an address within the shared memory region for storing incoming packets;

cause, by the network-interface component, an incoming packet for the application to be stored in the shared memory region according to the address based on a token associated with the address; and

send, by the network-interface component, a message to the application to notify the application that the incoming packet is available in the shared memory region.

Assignments (2)
CHANGE OF NAME Recorded Jul 6, 2022
From: FACEBOOK TECHNOLOGIES, LLC
To: META PLATFORMS TECHNOLOGIES, LLC
Reel/Frame 060591/0848 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 13, 2019
From: KURTSOV, GLEB; CHADD, ADRIAN HAROLD; SEDOV, STANISLAV
To: FACEBOOK TECHNOLOGIES, LLC
Reel/Frame 051280/0025 →