US 11,792,307 B2
Methods and apparatus for single entity buffer pool management
Cahya Adiansyah Masputra, San Jose, CA (US); Karan Sanghi, San Jose, CA (US); Mingzhe Zhang, Santa Clara, CA (US); Zeh-Chen Liu, Cupertino, CA (US); and Sandeep Nair, San Jose, CA (US)
Assigned to APPLE INC., Cupertino, CA (US)
Filed by Apple Inc., Cupertino, CA (US)
Filed on Sep. 27, 2018, as Appl. No. 16/144,992.
Claims priority of provisional application 62/649,509, filed on Mar. 28, 2018.
Prior Publication US 2019/0303204 A1, Oct. 3, 2019
Int. Cl. H04L 69/16 (2022.01); H04L 69/163 (2022.01); H04L 69/164 (2022.01); H04L 12/46 (2006.01); G06F 9/54 (2006.01); H04L 9/40 (2022.01); G06F 9/48 (2006.01); G06F 9/50 (2006.01); G06F 12/10 (2016.01); G06F 13/16 (2006.01); G06F 3/06 (2006.01); G06F 9/46 (2006.01); G06F 12/02 (2006.01); H04L 47/2475 (2022.01); H04L 47/2483 (2022.01); H04L 47/6295 (2022.01); H04L 49/00 (2022.01); H04L 49/9047 (2022.01); H04L 69/00 (2022.01); G06F 9/455 (2018.01); H04L 47/193 (2022.01); H04L 47/283 (2022.01); G06F 9/52 (2006.01); H04L 43/0864 (2022.01); G06F 16/23 (2019.01); G06F 21/52 (2013.01); H04L 47/24 (2022.01); H04L 47/30 (2022.01); H04L 47/32 (2022.01); H04L 47/6275 (2022.01); G06F 21/56 (2013.01); H04L 69/22 (2022.01); G06F 16/22 (2019.01); H04L 61/103 (2022.01); H04L 61/2503 (2022.01); H04L 67/146 (2022.01); H04L 69/18 (2022.01); H04L 1/00 (2006.01)
CPC H04L 69/162 (2013.01) [G06F 3/0604 (2013.01); G06F 3/0631 (2013.01); G06F 3/0644 (2013.01); G06F 3/0673 (2013.01); G06F 9/45558 (2013.01); G06F 9/461 (2013.01); G06F 9/4881 (2013.01); G06F 9/5005 (2013.01); G06F 9/5016 (2013.01); G06F 9/5022 (2013.01); G06F 9/52 (2013.01); G06F 9/542 (2013.01); G06F 9/545 (2013.01); G06F 12/023 (2013.01); G06F 12/10 (2013.01); G06F 13/1668 (2013.01); G06F 16/2228 (2019.01); G06F 16/2365 (2019.01); G06F 21/52 (2013.01); G06F 21/568 (2013.01); H04L 12/4641 (2013.01); H04L 43/0864 (2013.01); H04L 47/193 (2013.01); H04L 47/2458 (2013.01); H04L 47/2475 (2013.01); H04L 47/2483 (2013.01); H04L 47/283 (2013.01); H04L 47/30 (2013.01); H04L 47/32 (2013.01); H04L 47/6275 (2013.01); H04L 47/6295 (2013.01); H04L 49/30 (2013.01); H04L 49/9052 (2013.01); H04L 61/103 (2013.01); H04L 61/2542 (2013.01); H04L 63/166 (2013.01); H04L 67/146 (2013.01); H04L 69/02 (2013.01); H04L 69/161 (2013.01); H04L 69/163 (2013.01); H04L 69/164 (2013.01); H04L 69/18 (2013.01); H04L 69/22 (2013.01); G06F 9/50 (2013.01); G06F 2009/45595 (2013.01); G06F 2209/5011 (2013.01); G06F 2212/657 (2013.01); G06F 2221/032 (2013.01); G06F 2221/034 (2013.01); H04L 1/0061 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A method for a single entity buffer pool management for use with user space networking stacks, the method comprising:
establishing a pool of memory resources for the user space networking stacks, the pool of memory resources comprising (i) a managed set of memory resources associated with a single entity, the single entity comprising a driver, and (ii) one or more dedicated sets of memory resources different from the managed set of memory resources and including a first set of memory resources dedicated to a first application and a second set of memory resources dedicated to a second application and different from the first set of memory resources, wherein the first application includes a first user space networking stack configured to access the first set of memory resources by a first channel coupled to the first set of memory resources dedicated to the first application, and the first user space networking stack includes at least a transport layer protocol, and wherein the second application includes a second user space networking stack configured to access the second set of memory resources by a second channel different from the first channel, wherein the second channel is coupled to the second set of memory resources dedicated to the second application, and wherein the first channel and the second channel are both located at a user space and communicatively coupled to a flow switch that resides in a kernel space where an operating system is executed, and the flow switch is outside the pool of memory resources and further communicatively coupled to the first set of memory resources located in the kernel space and dedicated to the first application and the second set of memory resources located in the kernel space and dedicated to the second application;
servicing the first user space networking stack of the first application in the user space and the second user space networking stack of the second application based on the established pool of memory resources, wherein the user space is different from the kernel space;
determining, based at least on a change in context of the plurality of applications, that more or less memory resources are required for the pool of memory resources; and
adding or removing, via an allocation of the managed set of memory resources, resources within one or more of the one or more dedicated sets of memory resources in response to the determining.