IP Library Granted Patent US 10,897,488
Granted Patent B1
US 10,897,488 · App. 14/985,749 · Granted Jan 19, 2021

Multiplexing traffic from multiple network namespaces to a single listener in a stream-based server application

Inventors: Mukesh Gupta (Shrewsbury, MA); Robert Evan Frazier (Fuquay-Varina, NC); Pascal Donette (Hopkinton, MA); Arthur Otis Harris (Framingham, MA)
Assignee: EMC IP Holding Company LLC
H04L65/4069H04L65/607H04L67/42
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,897,488
App. No.
14/985,749
Filed
Dec 31, 2015
Granted
Jan 19, 2021
Kind
B1
Art Unit
2451
USPC
709/219
Abstract

Techniques of operating a server computer running an application for clients operating in multiple network namespaces involve multiplexing communications streams from clients hosted in different network namespaces into a single communication stream to present the requests to an application as if they originated from a single network namespace. Along these lines, a server computer commences operation by initiating a network namespace driver for each network namespaces and a multiplexing driver to multiplex network namespace communication streams received from the network namespace drivers. When the multiplexing driver receives an application access request from a network namespace driver within a network namespace communication stream, the multiplexing driver provides the request and a network namespace identifier identifying the network namespace driver to a stream head within a multiplexed communication stream that includes requests from other network namespace drivers.

Claims (64)

1. A method of operating a server computer running an application for client devices operating in multiple network namespaces, the method comprising:

instantiating, by processing circuitry of the server computer, (i) multiple network namespace drivers, each network namespace driver configured to send and receive network namespace communication streams between client devices operating in respective network namespaces and the application, and (ii) a multiplexing driver configured to multiplex the network namespace communication streams received from the network namespace drivers for presentation to the application, each network namespace being a construct that provides a logical copy of a network stack, with its own routes, firewall rules, and network devices;

receiving, by the multiplexing driver, a request within a network namespace communication stream from a network namespace driver;

providing, by the multiplexing driver, the request and a network namespace identifier identifying the network namespace driver to a stream head within a multiplexed communication stream that includes requests from other network namespace drivers, the stream head presenting the request to the application;

receiving, by the multiplexing driver, a reply to the request along with the network namespace identifier from the stream head;

in response to receiving the reply, selecting, by the multiplexing driver, one of the network namespace drivers based on the network namespace identifier; and

transmitting, by the multiplexing driver, the reply to the selected network namespace driver.

2. A method as in claim 1 , wherein each network namespace driver includes (i) a read queue that provides requests to a respective network namespace communication stream, the read queue receiving the requests from client devices operating in a respective network namespace in a first-in, first-out manner, and (ii) a write queue that receives replies to requests to the client devices operating in the respective network namespace in a first-in, first-out manner.

3. A method as in claim 2 , wherein the multiplexing driver includes (i) multiple lower read queues and (ii) an upper read queue, each of the multiple lower read queues containing requests received from the read queues of the network namespace drivers,

wherein the method further comprises, after receiving the request, arranging the request in a lower read queue that contains requests received from client devices operating in the same network namespace, and

wherein providing the request and the network namespace identifier to the stream head includes combining the request as arranged in the lower read queue and other requests arranged in other lower read queues in the upper read queue.

4. A method as in claim 3 , wherein the stream head includes a read queue from which requests from multiple network namespace drivers are presented to the application, and

wherein providing the request and the network namespace identifier to the stream head further includes transferring the request and the network namespace identifier from the upper read queue of the multiplexing driver to the read queue of the stream head in a first-in, first-out manner with respect to the other requests combined with the request in the upper read queue.

5. A method as in claim 2 , wherein the stream head includes a write queue to which replies from the application to requests presented to the application by the stream head are arranged in a first-in, first-out manner.

6. A method as in claim 5 , wherein the multiplexing driver includes (i) multiple lower write queues and (ii) an upper write queue, each of the multiple lower write queues containing replies to requests received from the write queue of the stream head,

wherein receiving the reply to the request along with the network namespace identifier from the stream head includes providing the reply and the identifier to the upper write queue of the multiplexing driver, and

wherein selecting one of the network namespace drivers includes identifying a lower write queue in the upper write queue based on the network namespace identifier.

7. A method as in claim 1 , wherein the server computer includes a namespace configuration repository that contains protocol-specific settings;

wherein instantiating the network namespace drivers includes providing the protocol-specific settings to the network namespace communication stream to effect communications between the application and client devices operating in the network namespace.

8. The method of claim 1 , wherein the stream head acts as a single listener for communications from the network namespace drivers, presenting itself as a single network endpoint for a multiplexed stream of requests from multiple network namespaces.

9. The method of claim 1 , further comprising running the application on the server computer.

10. The method of claim 1 , wherein providing the network namespace identifier includes:

receiving a VLAN (Virtual Local Area Network) identifier from a switch that connects a particular client device to the server computer, the particular client device operating in a particular network namespace; and

using the VLAN identifier as the network namespace identifier for identifying the particular network namespace.

11. The method of claim 10 , wherein receiving the request from the network namespace driver occurs in response to the server receiving a client request from the particular client device over an interface dedicated to the VLAN and paired to the particular network namespace.

12. A computer program product including a non-transitory, computer-readable storage medium which stores executable code, which when executed by a computer, causes the computer to perform a method of operating a server computer running an application for client devices operating in multiple network namespaces, the method comprising:

instantiating (i) multiple network namespace drivers, each network namespace driver configured to send and receive network namespace communication streams between client devices operating in respective network namespaces and the application, and (ii) a multiplexing driver configured to multiplex the network namespace communication streams received from the network namespace drivers for presentation to the application, each network namespace being a construct that provides a logical copy of a network stack, with its own routes, firewall rules, and network devices;

receiving a request from a network namespace driver within a network namespace communication stream;

providing the request and a network namespace identifier identifying the network namespace driver to a stream head within a multiplexed communication stream that includes requests from other network namespace drivers, the stream head presenting the requests to the application;

receiving, over another multiplexed communication stream, a reply to the request along with the network namespace identifier from the stream head;

in response to receiving the reply, selecting one of the network namespace drivers based on the network namespace identifier; and

transmitting the reply to the selected network namespace driver to satisfy the request.

13. A computer program product as in claim 12 , wherein each network namespace driver includes (i) a read queue that provides requests to a respective network namespace communication stream, the read queue receiving the requests from client devices operating in a respective network namespace in a first-in, first-out manner, and (ii) a write queue that receives replies to requests to the client devices operating in the respective network namespace in a first-in, first-out manner.

14. A computer program product as in claim 13 , wherein the multiplexing driver includes (i) multiple lower read queues and (ii) an upper read queue, each of the multiple lower read queues containing requests received from the read queues of the network namespace drivers,

wherein the method further comprises, after receiving the request, arranging the request in a lower read queue that contains requests received from client devices operating in the same network namespace, and

wherein providing the request and the network namespace identifier to the stream head includes combining the request as arranged in the lower read queue and other requests arranged in other lower read queues in the upper read queue.

15. A computer program product as in claim 14 , wherein the stream head includes a read queue from which requests from multiple network namespace drivers are presented to the application, and

wherein providing the request and the network namespace identifier to the stream head further includes transferring the request and the network namespace identifier from the upper read queue of the multiplexing driver to the read queue of the stream head in a first-in, first-out manner with respect to the other requests combined with the request in the upper read queue.

16. A computer program product as in claim 13 , wherein the stream head includes a write queue to which replies from the application to requests presented to the application by the stream head are arranged in a first-in, first-out manner.

17. A computer program product as in claim 16 , wherein the multiplexing driver includes (i) multiple lower write queues and (ii) an upper write queue, each of the multiple lower write queues containing replies to requests received from the write queue of the stream head,

wherein receiving the reply to the request along with the network namespace identifier from the stream head over the other multiplexed communication stream includes providing the reply and the identifier to the upper write queue of the multiplexing driver, and

wherein selecting one of the network namespace drivers includes identifying a lower write queue in the upper write queue based on the network namespace identifier.

18. A computer program product as in claim 12 , wherein the server computer includes a namespace configuration repository that contains protocol-specific settings;

wherein instantiating the network namespace drivers includes providing the protocol-specific settings to the network namespace communication stream to effect communications between the application and client devices operating in the network namespace.

19. An electronic apparatus constructed and arranged to operate a server computer running an application for client devices operating in multiple network namespaces, the electronic apparatus including:

a network interface;

memory; and

controlling circuitry couple to the memory, the controlling circuitry being constructed and arranged to:

instantiate (i) multiple network namespace drivers, each network namespace driver configured to send and receive network namespace communication streams between client devices operating in respective network namespaces and the application, and (ii) a multiplexing driver configured to multiplex the network namespace communication streams received from the network namespace drivers for presentation to the application, each network namespace being a construct that provides a logical copy of a network stack, with its own routes, firewall rules, and network devices;

receive a request from a network namespace driver within a network namespace communication stream;

provide the request and a network namespace identifier identifying the network namespace driver to a stream head within a multiplexed communication stream that includes requests from other network namespace drivers, the stream head presenting the requests to the application;

receive, over another multiplexed communication stream, a reply to the request along with the network namespace identifier from the stream head;

in response to receiving the reply, select one of the network namespace drivers based on the network namespace identifier; and

transmit the reply to the selected network namespace driver to satisfy the request.

20. An electronic apparatus as in claim 19 , wherein each network namespace driver includes (i) a read queue that provides requests to a respective network namespace communication stream, the read queue receiving the requests from client devices operating in a respective network namespace in a first-in, first-out manner, and (ii) a write queue that receives replies to requests to the client devices operating in the respective network namespace in a first-in, first-out manner.

21. An electronic apparatus as in claim 20 , wherein the multiplexing driver includes (i) multiple lower read queues and (ii) an upper read queue, each of the multiple lower read queues containing requests received from the read queues of the network namespace drivers,

wherein the controlling circuitry is further constructed and arranged to, after receiving the request, arrange the request in a lower read queue that contains requests received from client devices operating in the same network namespace, and

wherein the controlling circuitry constructed and arranged to provide the request and the network namespace identifier to the stream head is further constructed and arranged to combine the request as arranged in the lower read queue and other requests arranged in other lower read queues in the upper read queue.

22. An electronic apparatus as in claim 21 , wherein the stream head includes a read queue from which requests from multiple network namespace drivers are presented to the application, and

wherein the controlling circuitry constructed and arranged to provide the request and the network namespace identifier to the stream head is further constructed and arranged to transfer the request and the network namespace identifier from the upper read queue of the multiplexing driver to the read queue of the stream head in a first-in, first-out manner with respect to the other requests combined with the request in the upper read queue.

23. An electronic apparatus as in claim 20 , wherein the stream head includes a write queue to which replies from the application to requests presented to the application by the stream head are arranged in a first-in, first-out manner.

24. An electronic apparatus as in claim 23 , wherein the multiplexing driver includes (i) multiple lower write queues and (ii) an upper write queue, each of the multiple lower write queues containing replies to requests received from the write queue of the stream head,

wherein the controlling circuitry constructed and arranged to receive the reply to the request along with the network namespace identifier from the stream head over the other multiplexed communication stream is further constructed and arranged to provide the reply and the identifier to the upper write queue of the multiplexing driver, and

wherein the controlling circuitry constructed and arranged to select one of the network namespace drivers is further constructed and arranged to identify a lower write queue in the upper write queue based on the network namespace identifier.

Assignments (10)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 26, 2016
From: GUPTA, MUKESH; FRAZIER, ROBERT EVAN; DONETTE, PASCAL; HARRIS, ARTHUR OTIS
To: EMC CORPORATION
Reel/Frame 037583/0115 →