IP Library Granted Patent US 11,146,665
Granted Patent B2
US 11,146,665 · App. 16/365,462 · Granted Oct 12, 2021

Methods and apparatus for sharing and arbitration of host stack information with user space communication stacks

Inventors: Cahya Adiansyah Masputra (San Jose, CA); Sandeep Nair (San Jose, CA); Darrin Jewell (Woodside, CA); Prabhakar Lakhera (San Jose, CA); Thomas Francis Pauly (Cupertino, CA); Joshua Verweyst Graessley (Cupertino, CA); Wei Shen (Cupertino, CA); Olivier Mardinian (Cupertino, CA)
Assignee: Apple Inc.
H04L69/162G06F3/0604G06F3/0631G06F3/0644G06F3/0673G06F9/45558G06F9/461G06F9/4881G06F9/5005G06F9/5016G06F9/5022G06F9/52G06F9/542G06F9/545G06F12/023G06F12/10G06F13/1668G06F16/2228G06F16/2365G06F21/52G06F21/568H04L12/4641H04L43/0864H04L47/193H04L47/2458H04L47/2475H04L47/2483H04L47/283H04L47/30H04L47/32H04L47/6275H04L47/6295H04L49/30H04L49/9052H04L61/103H04L61/2542H04L63/166H04L67/146H04L69/02H04L69/161H04L69/163H04L69/164H04L69/18H04L69/22G06F9/50G06F2009/45595G06F2209/5011G06F2212/657G06F2221/032G06F2221/034H04L1/0061
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 11,146,665
App. No.
16/365,462
Granted
Oct 12, 2021
Kind
B2
Abstract

Methods and apparatus for efficient data transfer within a user space network stack. Unlike prior art monolithic networking stacks, the exemplary networking stack architecture described hereinafter includes various components that span multiple domains (both in-kernel, and non-kernel). For example, unlike traditional “socket” based communication, disclosed embodiments can transfer data directly between the kernel and user space domains. Direct transfer reduces the per-byte and per-packet costs relative to socket based communication. A user space networking stack is disclosed that enables extensible, cross-platform-capable, user space control of the networking protocol stack functionality. The user space networking stack facilitates tighter integration between the protocol layers (including TLS) and the application or daemon. Exemplary systems can support multiple networking protocol stack instances (including an in-kernel traditional network stack).

Claims (30)

1. A method for sharing and arbitration of network namespace, the method comprising:

requesting a tuple entry for a user space communication stack from a shared namespace registry, wherein the shared namespace registry includes a 3-tuple entry for a first user space communication stack, a 5-tuple entry for a second user space communication stack, and a 3-tuple entry for a host stack;

determining whether the shared namespace registry is up-to-date and whether resources are available to support the tuple entry; and

causing, in response to the determining the shared namespace registry is up-to-date and resources are available to support the tuple entry, a registration of the tuple entry for the user space communication stack in the shared namespace registry.

2. The method of claim 1 , wherein requesting the tuple entry for the user space communication stack comprises calling a kernel space process.

3. The method of claim 2 , wherein calling the kernel space process comprises calling the host stack.

4. The method of claim 3 , wherein calling the host stack includes providing a callback cookie data structure.

5. The method of claim 1 , wherein causing the registration of the tuple entry for the user space communication stack includes providing a source port and a protocol identifier.

6. The method of claim 5 , wherein causing the registration of the tuple entry for the user space communication stack further includes providing a destination port.

7. The method of claim 1 , further comprising using a cached shared namespace registry.

8. A method for setting system-wide parameters for communication stack coexistence devices, comprising:

storing one or more system control parameters within a shared data structure, wherein the shared data structure is read-write for kernel space processes in a kernel space and is read-only for user space applications including one or more user space communication stacks;

initializing a host communication stack at the kernel space based on the one or more system control parameters; and

initializing at least one other communication stack based on the one or more system control parameters, wherein the other communication stack is either an other host communication stack or a user space communication stack;

wherein the host communication stack and the at least one other communication stack are configured to share a common resource.

9. The method of claim 8 , wherein the common resource is a TCP/IP network interface driver.

10. The method of claim 8 , wherein the method further comprises updating a first system control parameter and re-initializing the at least one other communication stack based on the first system control parameter.

11. The method of claim 8 , wherein the method further comprises updating a first system control parameter and initializing another communication stack based on the first system control parameter.

12. The method of claim 8 , wherein the at least one other communication stack can only read the shared data structure.

13. The method of claim 12 , wherein the host communication stack can read and write the shared data structure.

14. A non-transitory computer readable apparatus comprising a storage medium having one or more computer programs stored thereon, the one or more computer programs being configured to, when executed by a processing apparatus, cause a computerized apparatus to:

request a tuple entry for a user space communication stack from a shared namespace registry, wherein the shared namespace registry includes a 3-tuple entry for a first user space communication stack, a 5-tuple entry for a second user space communication stack, and a 3-tuple entry for a host stack;

determine whether the shared namespace registry is up-to-date and whether resources are available to support the tuple entry; and

cause, in response to determining the shared namespace registry is up-to-date and resources are available to support the tuple entry, a registration of the tuple entry for the user space communication stack in the shared namespace registry.

15. The non-transitory computer readable apparatus of claim 14 , wherein to request the tuple entry for the user space communication stack comprises calling a kernel space process.

16. The non-transitory computer readable apparatus of claim 15 , wherein to call the kernel space process comprises calling the host stack.

17. The non-transitory computer readable apparatus of claim 16 , wherein to call the host stack includes providing a callback cookie data structure.

18. The non-transitory computer readable apparatus of claim 14 , wherein in response to determining no resources are available to support the tuple entry, the one or more computer programs further cause the computerized apparatus to reject the request.

19. The non-transitory computer readable apparatus of claim 14 , wherein to cause the registration of the tuple entry comprises assigning or allocating a new tuple entry to the user space communication stack in the shared namespace registry.

20. The non-transitory computer readable apparatus of claim 14 , wherein to cause the registration of the tuple entry comprises modifying an existing tuple entry in the shared namespace registry.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 18, 2020
From: MASPUTRA, CAHYA ADIANSYAH; NAIR, SANDEEP; JEWELL, DARRIN; LAKHERA, PRABHAKAR; PAULY, THOMAS FRANCIS; GRAESSLEY, JOSHUA VERWEYST; SHEN, WEN; MARDINIAN, OLIVIER
To: APPLE INC.
Reel/Frame 052156/0913 →
Continuity (2)
Provisional Application 62649509 · Mar 28, 2018
Related Publication 20190306109A1 · Oct 3, 2019
Cited By (6)
US 12,314,786 US 12,316,548 US 12,556,611 US 12,568,064 US 12,580,990 US 12,701,166