IP Library Granted Patent US 10,904,342
Granted Patent B2
US 10,904,342 · App. 16/049,401 · Granted Jan 26, 2021

Container networking using communication tunnels

Inventors: Jerome Tollet (Paris, FR); Giles Douglas Yorke Heron (London, GB); Keith Burns (San Jose, CA); Andre Jean-Marie Surcouf (St. Leu la Foret, FR)
Assignee: CISCO TECHNOLOGY, INC.
H04L67/141G06F9/547H04L63/029
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,904,342
App. No.
16/049,401
Granted
Jan 26, 2021
Kind
B2
Abstract

Systems, methods, and computer-readable media for enabling container networking are disclosed. In one aspect, a method includes receiving a request from a first network container on a source server to establish a data session with a second network container on a destination server; determining a destination switch of the destination server based on the request; identifying a communication tunnel between the source server and the destination server; generating a data stream to be embedded in the pre-established communication tunnel, wherein a communication protocol associated with the request is different from a communication protocol used by the data stream; receiving a data packet to be sent to the destination container; mapping the data packet to the data stream; and sending the data packet to the destination server via the data stream over the communication tunnel.

Claims (60)

1. A method comprising:

receiving, at a source switch, a request from a first network container on a source server to establish a data session with a second network container on a destination server;

identifying, by the source switch, a pre-established communication tunnel between the source server and the destination server;

generating, by the source switch, a data stream to be embedded in the pre-established communication tunnel, wherein a communication protocol associated with the request is different from a communication protocol used by the data stream for communicating data between the first network container and the second network container;

receiving a data packet, at the source switch, to be sent to the destination server;

mapping, by the source switch, the data packet to the data stream; and

sending, by the source switch, the data packet to the destination server via the data stream over the communication tunnel.

2. The method of claim 1 , wherein the data session requested by the first network container is a transmission control protocol (TCP) session.

3. The method of claim 2 , further comprising:

determining, by the source switch, a destination switch of the destination server based on the request, wherein determining the destination switch is based on an IP address included in a TCP SYN packet received as part of the request.

4. The method of claim 2 , wherein mapping the data packet to the data stream is based on a flow table that maps a 5-tuple of the TCP session to the data stream.

5. The method of claim 1 , wherein

the communication tunnel is a Hyper Text Transfer Protocol 2 (HTTP2) tunnel and the data stream is an HTTP2 stream; or

the communication tunnel is a Quick UDP Internet Connection (QUIC) tunnel and the data stream is a QUIC stream; and

the communication tunnel is part of a mesh of communication tunnels between a pair of servers, each communication tunnel being configured to have at least one data stream embedded therein for enabling communication between two network containers on a corresponding pair of servers.

6. The method of claim 1 , wherein mapping the data packet to the data stream comprises:

extracting payload of the data packet to yield extracted payload; and

embedding the extracted payload into a data field of the data stream.

7. The method of claim 1 , further comprising:

determining whether the data session has been terminated or not; and

in response to determining that the data session has been terminated, closing the data stream and updating a corresponding flow table for maintaining mapping of one or more data sessions to one or more data streams.

8. A device comprising:

one or more network containers implemented thereon; and

a network switch configured to:

receive a request from a first network container of the one or more network containers on the server to establish a data session with a second network container on a destination server;

identify a communication tunnel between the server and the destination server;

generate a data stream to be embedded in the communication tunnel for exchange of data packets between the first network container and the second network container, wherein a communication protocol associated with the request received from the first network container is different from a communication protocol used by the data stream for facilitating the exchange of data packets between the first network container and the second network container;

receive a data packet from the first network container to be sent to the destination server;

map the data packet to the data stream; and

send the data packet to the destination server via the data stream over the communication tunnel.

9. The device of claim 8 , wherein the switch is a virtual switch.

10. The device of claim 8 , wherein the data session requested by the first network container is a transmission control protocol (TCP) session.

11. The device of claim 10 , wherein the switch is configured to determine the destination switch based on an IP address included in a TCP SYN packet received as part of the request.

12. The device of claim 10 , wherein the switch is configured to map the data packet to the data stream based on a flow table that maps a 5-tuple of the TCP session to the data stream.

13. The device of claim 8 , wherein

the communication tunnel is a Hyper Text Transfer Protocol 2 (HTTP2) tunnel and the data stream is an HTTP2 stream; or

the communication tunnel is a Quick UDP Internet Connection (QUIC) tunnel and the data stream is a QUIC stream; and

the communication tunnel is part of a mesh of communication tunnels between a pair of servers, each communication tunnel being configured to have at least one data stream embedded therein for enabling communication between two network containers on a corresponding pair of servers.

14. The device of claim 8 , wherein the switch is configured to map the data packet to the data stream by:

extracting payload of the data packet to yield extracted payload; and

embedding the extracted payload into a data field of the data stream.

15. The device of claim 8 , wherein the switch is further configured to:

determine whether the data session has been terminated or not; and

in response to determining that the data session has been terminated, close the data stream and update a corresponding flow table for maintaining mapping of one or more data sessions to one or more data streams.

16. The device of claim 8 , wherein multiple data streams are multiplexed onto the communication tunnel for carrying data packets to the destination server.

17. One or more non-transitory computer-readable medium having computer-readable instructions stored therein, which when executed by one or more processors, cause the one or more processors to function as a virtual switch of a server to:

receive a request from a first network container on the server to establish a transfer control protocol (TCP) session with a second network container on a destination server;

identify a communication tunnel between the server and the destination server;

generate a data stream to be embedded in the communication tunnel for exchange of data packets between the first network container and the second network container, wherein a communication used by the data stream for facilitating the exchange of data packets between the first network container and the second network container is different from a TCP protocol used for the TCP session;

receive a TCP data packet from the first network container to be sent to the destination container;

map the TCP data packet to the data stream; and

transmit the TCP data packet to the destination server via the data stream over the communication tunnel.

18. The one or more non-transitory computer-readable medium of claim 17 , wherein the virtual switch is configured to map the TCP data packet to the data stream based on a flow table that maps a 5-tuple of the TCP session to the data stream.

19. The one or more non-transitory computer-readable medium of claim 17 , wherein

the communication tunnel is a Hyper Text Transfer Protocol 2 (HTTP2) tunnel and the data stream is an HTTP2 stream; or

the communication tunnel is a Quick UDP Internet Connection (QUIC) tunnel and the data stream is a QUIC stream; and

the communication tunnel is part of a mesh of communication tunnels between a pair of servers, each communication tunnel being configured to have at least one data stream embedded therein for enabling communication between two network containers on a corresponding pair of servers.

20. The one or more non-transitory computer-readable medium of claim 17 , wherein the virtual switch is configured to:

determine whether the data session has been terminated or not; and

in response to determining that the data session has been terminated, close the data stream and update a corresponding flow table for maintaining mapping of one or more data sessions to one or more data streams.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2018
From: TOLLET, JEROME; HERON, GILES DOUGLAS YORKE; BURNS, KEITH; SURCOUF, ANDRE JEAN-MARIE
To: CISCO TECHNOLOGY, INC.
Reel/Frame 046504/0619 →
Continuity (1)
Related Publication 20200036796A1 · Jan 30, 2020
Cited By (1)
US 12,363,065