IP Library Granted Patent US 12,204,922
Granted Patent B2
US 12,204,922 · App. 17/178,983 · Granted Jan 21, 2025

Cross-container delegation

Inventor: Ivan Dimitrov Pashov (Woodinville, WA)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
G06F9/45558G06F2009/45579G06F2009/45595
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 12,204,922
App. No.
17/178,983
Granted
Jan 21, 2025
Kind
B2
Abstract

A computing system delegates a request between a first container in user mode of an operating system on a webserver system and a second container in the user mode of the operating system. The operating system includes a kernel. A service in the second container creates a delegation queue in the kernel of the operating system. The service adds an identifier as a property of the delegation queue in the kernel, wherein the identifier is unique across the first container and the second container. A router executing in the first container opens the delegation queue in the kernel using the identifier, responsive to the adding operation. The request is delegated to the service executing in the second container via the delegation queue in the kernel, responsive to the opening operation.

Claims (48)

1. A method of delegating a request between a first container in a user mode of an operating system on a webserver system and a second container in the user mode of the operating system, the operating system further including a kernel, the method comprising:

creating, by a service executing in the second container, a delegation queue in the kernel of the operating system;

adding, by the service executing in the second container, an identifier as a property of the delegation queue in the kernel, wherein the identifier is unique across the first container and the second container;

opening, by a router executing in the first container, the delegation queue in the kernel using the identifier, responsive to the adding operation, wherein:

the service executing in the second container executes in a namespace that is inaccessible to the router executing in the first container in the user mode; and

the router executing in the first container executes in another namespace that is inaccessible to the service executing in the second container in the user mode; and

delegating the request to the service executing in the second container via the delegation queue in the kernel, responsive to the opening operation.

2. The method of claim 1 , wherein the creating operation comprises creating the delegation queue using another identifier local to the second container.

3. The method of claim 2 , wherein the router executing in the first container obtains the identifier from a datastore external to the second container.

4. The method of claim 1 , wherein the delegating operation comprises:

receiving the request in a routing queue in the kernel via a network stack in the kernel;

moving the request from the routing queue to the delegation queue in the kernel;

receiving, at the service executing in the second container, the request from the delegation queue in the kernel; and

processing the request by the service executing in the second container in the user mode.

5. A system for delegating a request from a first container in a user mode of an operating system to a second container in the user mode of the operating system, the system comprising:

one or more hardware processors; and

one or more tangible processor-readable storage media storing instructions that, when executed on the one or more hardware processors, cause the system to:

execute a service in the second container;

create, for the service executing in the second container, a delegation queue in a kernel of the operating system;

add an identifier as a property of the delegation queue in the kernel of the operating system, wherein the identifier is unique across the first container and the second container;

execute a router in the first container, wherein:

the service executing in the second container executes in a first namespace that is inaccessible to the router executing in the first container in the user mode; and

the router executing in the first container executes in a second namespace that is inaccessible to the service executing in the second container in the user mode;

open, via execution of the router in the first container, the delegation queue in the kernel of the operating system using the identifier; and

delegate, via the opened delegation queue in the kernel of the operating system, the request from the first container to the service executing in the second container.

6. The system of claim 5 , wherein the service executing in the second container is configured to create the delegation queue using another identifier local to the second container.

7. The system of claim 5 , wherein the router executing in the first container obtains the identifier from a datastore external to the second container.

8. The system of claim 5 , wherein:

the request is received in a routing queue via a networking stack; and

the router executing in the first container is configured to move the request from the routing queue to the delegation queue in the kernel of the operating system.

9. The system of claim 5 , wherein the service executing in the second container is configured to process the request in the user mode after the request is received by the service executing in the second container from the delegation queue in the kernel of the operating system.

10. One or more tangible processor-readable storage media of a tangible article of manufacture encoding processor-executable instructions for delegating a request from a first container in a user mode of an operating system on a web server to a second container in the user mode of the operating system, the processor-executable instructions, when executed, causing the web server to perform operations comprising:

creating a delegation queue in a kernel of the operating system using a queue identifier that is unique across the first container and the second container;

opening the delegation queue in the kernel of the operating system using the queue identifier; and

delegating the request from the first container to a service executing in the second container via the delegation queue opened in the kernel of the operating system, wherein:

the service executing in the second container executes in a first namespace that is inaccessible to a router executing in the first container in the user mode; and

the router executing in the first container executes in a second namespace that is inaccessible to the service executing in the second container in the user mode.

11. The one or more tangible processor-readable storage media of claim 10 , wherein the delegating operation comprises:

receiving the request in a routing queue in the kernel of the operating system via a network stack;

moving the request from the routing queue to the delegation queue in the kernel of the operating system;

receiving, at the service executing in the second container, the request from the delegation queue in the kernel of the operating system; and

processing the request by the service executing in the second container in the user mode.

12. The one or more tangible processor-readable storage media of claim 11 , wherein the moving operation is executed by the router executing in the first container.

13. The method of claim 1 , further comprising:

creating, by another service executing in a third container, another delegation queue in the kernel of the operating system;

adding, by the other service executing in the third container, another identifier as another property of the other delegation queue in the kernel of the operating system, wherein the other identifier is unique across the first container and the third container;

opening, by the router executing in the first container, the other delegation queue in the kernel of the operating system using the other identifier; and

delegating another request to the other service executing in the third container via the other delegation queue that has been opened in the kernel of the operating system.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 18, 2021
From: PASHOV, IVAN DIMITROV
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 055322/0752 →
Continuity (2)
Provisional Application 63129149 · Dec 22, 2020
Related Publication 20220197666A1 · Jun 23, 2022
References Cited (17)
US 6085217A · Ault et al. · 2000 [cited by applicant]
US 7430738B1 · Sanders et al. · 2008 [cited by applicant]
US 8132176B2 · Mazzaferri et al. · 2012 [cited by applicant]
US 8966464B1 · Christopher et al. · 2015 [cited by applicant]
US 10193963B2 · Gummaraju et al. · 2019 [cited by applicant]
US 10353737B2 · Pashov · 2019 [cited by applicant]
US 10389697B1 · Kulkarni et al. · 2019 [cited by applicant]
US 10725829B2 · Qiu et al. · 2020 [cited by applicant]
US 20180091447A1 · Jared · 2018 [cited by examiner]
US 20180129533A1 · Pashov · 2018 [cited by applicant]
US 20190075063A1 · Mcdonnell · 2019 [cited by examiner]
US 20190227842A1 · Qiu · 2019 [cited by examiner]
US 20190288922A1 · Viklund · 2019 [cited by applicant]
US 20190303345A1 · Zhu · 2019 [cited by examiner]
“International Search Report and Written Opinion Issued in PCT Application No. PCT/US21/057489”, Mailing Date: Feb. 11, 2022, 10 Pages. [cited by applicant]
Chekin, Pavel, “Kubernetes multi-container pods and container communication”, Retrieved from: https://www.mirantis.com/blog/multi-container-pods-and-container-communication-in-kubernetes/, Aug. 28, 2017, 20 Pages. [cited by applicant]
Kontridze, George, “Lessons learned from using Docker Swarm mode in production”, Retrieved from: https://www.bugsnag.com/blog/container-orchestration-with-docker-swarm-mode, Sep. 15, 2016, 08 Pages. [cited by applicant]