IP Library Granted Patent US 10,812,374
Granted Patent B2
US 10,812,374 · App. 16/138,595 · Granted Oct 20, 2020

Segment routing with fast reroute for container networking

Inventors: Giles Douglas Yorke Heron (London, GB); Edward A. Warnicke (Austin, TX); William Mark Townsley (Paris, FR); Yoann Desmouceaux (Paris, FR)
Assignee: CISCO TECHNOLOGY, INC.
H04L45/22H04L45/04H04L45/28H04L45/34H04L61/256H04L45/306H04L45/38H04L2212/00
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,812,374
App. No.
16/138,595
Filed
Sep 21, 2018
Granted
Oct 20, 2020
Kind
B2
Examiner
MIAN, OMER S
Art Unit
2461
USPC
370/392
Abstract

Systems and methods provide for segment routing (SR) with fast reroute in a container network. An SR ingress can receive a packet from a first container destined for a container service. The ingress can generate an SR packet including a segment list comprising a first segment to a first container service host, a second segment to a second service host, and a third segment to the service. The ingress can forward the SR packet to a first SR egress corresponding to the first host using the first segment. The first egress can determine whether the first service and/or host is reachable. If so, the first egress can forward the SR packet to the first host or the packet to the service. If not, the first egress can perform a fast reroute and forward the SR packet to a second SR egress corresponding to the second host using the second segment.

Claims (54)

1. A computer-implemented method comprising:

receiving, by a first segment routing device from a first container in a first host, a packet destined for a container service;

generating, by the first segment routing device, a segment routing packet including the packet and a segment list, the segment list including a first segment to a second host including a second container of the container service, a second segment to a third host including a third container of the container service, and a third segment to the container service;

forwarding the segment routing packet to a second segment routing device corresponding to the first segment, wherein upon forwarding the segment routing packet to the second routing device corresponding to the first segment, the segment routing packet is rerouted by a switching device or a leaf switch of the second host to a third segment routing device corresponding to the second segment in response to determining, by the switching device or the leaf switch of the second host, that at least one of the second container or the second host is unreachable and wherein the first segment routing device is reprogrammed by a controller to reflect that at least one of the second container or the second host is unreachable; and

updating, by the first segment routing device, the segment list to include one or more segments different from the first segment.

2. The computer-implemented method of claim 1 , wherein the second segment routing device is a virtual switch in the second host.

3. The computer-implemented method of claim 1 , wherein the second segment routing device is a physical switch connected to the second host.

4. The computer-implemented method of claim 1 , further comprising:

encapsulating the packet with an outer Internet Protocol (IP) header and a segment routing header including the segment list to generate the segment routing packet.

5. The computer-implemented method of claim 1 , further comprising:

inserting a segment routing header including the segment list between an IP header of the packet and a payload of the packet to generate the segment routing packet.

6. The computer-implemented method of claim 1 , further comprising:

receiving the segment list by the first segment routing device from a network controller.

7. The computer-implemented method of claim 1 , further comprising:

determining, by the first segment routing device, the segment list based on a routing protocol.

8. The computer-implemented method of claim 1 , further comprising:

receiving, by the first segment routing device, a second packet destined for a second container service;

generating, by the first segment routing device, a second segment routing packet including the second packet and a second segment list, the second segment list including a fourth segment associated with a host including a fourth container of the second container service, a fifth segment associated with a host including a fifth container of the second container service, and a sixth segment to the second container service;

forwarding the second segment routing packet to a segment routing device corresponding to the fourth segment; and

forwarding the second packet to the fourth container in response to determining that the fourth container is reachable.

9. The computer-implemented method of claim 8 , further comprising:

forwarding the second segment routing packet to the host including the fourth container in response determining that the host is reachable; and

de-encapsulating the second segment routing packet to recover the second packet.

10. The computer-implemented method of claim 1 , further comprising:

rerouting the segment routing packet to a fourth segment routing device in response to determining that at least one of the third container or the third host is unreachable.

11. The computer-implemented method of claim 1 , further comprising:

de-encapsulating an outer IP header and a segment routing header from the segment routing packet to recover the packet; and

forwarding the packet to the third container.

12. The computer-implemented method of claim 1 , further comprising:

updating a destination address in an IP header of the segment routing packet using the third segment;

removing a segment routing header from the segment routing packet to recover the packet; and

forwarding the packet to the third container.

13. A system comprising:

one or more processors; and

at least one computer-readable storage medium having stored therein instructions which, when executed by the one or more processors, cause the one or more processors to:

receive, by a first segment routing device from a first container pod in a first host, a packet destined for a container service;

generate, by the first segment routing device, a segment routing packet including the packet and a segment list, the segment list including a first segment to a second host including a second container of the container service, a second segment to a third host including a third container pod of the container service, and a third segment to the container service;

forward the segment routing packet to a second segment routing device corresponding to the first segment, wherein, upon forwarding the segment routing packet to the second routing device corresponding to the first segment, the segment routing packet is rerouted by a switching device or a leaf switch of the second host to a third segment routing device corresponding to the second segment in response to determining, by the switching device or the leaf switch of the second host, that at least one of the second container or the second host is unreachable, and wherein the first segment routing device is reprogrammed by a controller to reflect that at least one of the second container or the second host is unreachable; and

update, by the first segment routing device, the segment list to include one or more segments different from the first segment.

14. The system of claim 13 , wherein the instructions when executed further cause the one or more processors to:

generate a binding segment identifier (BSID) for the container service using the segment list; and

associate the BSID with the first segment routing device.

15. The system of claim 13 , wherein one or more segments of the segment list include a locator and a segment routing function.

16. The system of claim 13 , wherein the instructions when executed further cause the one or more processors to:

determine a route for one or more segments of the segment list that traverses a non-segment routing transit device.

17. A non-transitory computer-readable storage medium having stored therein instructions which, when executed by one or more processors, cause the one or more processors to:

receive, by a first Segment Routing for Internet Protocol version 6 data plane (SRv6) device from a first container in a first host, an Internet Protocol version 6 (IPv6) packet destined for a container service;

generate, by the first SRv6 device, an SRv6 packet including the IPv6 packet and a segment list, the segment list including a first segment to a second host including a second container of the container service, a second segment to a third host including a third container of the container service, and a third segment to the container service;

forward the SRv6 packet to a second SRv6 device corresponding to the first segment, wherein, upon forwarding the SRv6 packet to the second SRv6 device corresponding to the first segment, the segment routing packet is rerouted by a switching device or a leaf switch of the second host to a third SRv6 device corresponding to the second segment in response to determining, by the switching device or the leaf switch of the second host, that at least one of the second container or the second host is unreachable, and wherein the first SRv6 device is reprogrammed by a controller to reflect that at least one of the second container or the second host is unreachable; and

update, by the first SRv6 device, the segment list to include one or more segments different from the first segment.

18. The non-transitory computer-readable storage medium of claim 17 , wherein the segment list includes an SRv6 End.S function and an SRv6 End.X.PSP function.

19. The non-transitory computer-readable storage medium of claim 18 , wherein the segment list further includes an SRv6 End.R function.

20. The non-transitory computer-readable storage medium of claim 17 , wherein the instructions when executed further cause the one or more processors to:

instantiate, by a Kubernetes master, the first container in a first container pod, the second container in a second container pod, and a third container in a third container pod.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 21, 2018
From: HERON, GILES DOUGLAS YORKE; WARNICKE, EDWARD A.; TOWNSLEY, WILLIAM MARK; DESMOUCEAUX, YOANN
To: CISCO TECHNOLOGY, INC.
Reel/Frame 046942/0299 →
Continuity (1)
Related Publication 20200099610A1 · Mar 26, 2020
Cited By (1)
US 12,273,803