IP Library Granted Patent US 12,368,694
Granted Patent B1
US 12,368,694 · App. 18/662,424 · Granted Jul 22, 2025

Allocating addresses from pools

Inventors: Aniket J. Gawade (Fremont, CA); Sachchidanand Vaidya (Santa Clara, CA); Yuvaraja Mariappan (San Jose, CA)
Assignee: Juniper Networks, Inc.
H04L61/5084G06F9/45558G06F11/2025H04L61/5061G06F2009/45595G06F2201/815
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,368,694
App. No.
18/662,424
Filed
May 13, 2024
Granted
Jul 22, 2025
Kind
B1
Examiner
LEE, BRYAN Y
Art Unit
2445
USPC
709/245
Abstract

Techniques are described for creating isolated pools of external, failover, and/or floating IP addresses. In one example, this disclosure describes a method including creating a plurality of virtual networks, creating a plurality of pools of external IP addresses, detecting a request to instantiate an object that identifies a specific pool from the plurality of pools of external IP addresses; and instantiating the object and configuring the object with an external IP address drawn from the specific pool. The pools of external IP addresses may be created and isolated on a per-namespace, per-service, or per-ingress basis.

Claims (70)

1. A computing system comprising a storage device and processing circuitry, wherein the processing circuitry has access to the storage device and is configured to:

create an object in a virtualized computing infrastructure, where the object is isolated to prevent access by any other object in a plurality of objects, and wherein the plurality of objects includes the object;

associate a pool of addresses with the object, wherein the pool includes a plurality of addresses for use by the object;

configure the object with an address drawn from the pool of addresses;

enable the object to service a request sent to the address;

configure another object from the plurality of objects with the address; and

enable the other object, after configuring the other object with the address, to service requests sent to the address.

2. The computing system of claim 1 , wherein to configure the other object with the address, the processing circuitry is further configured to:

determine that the object is not available to service requests sent to the address; and

responsive to determining that the object is not available, configure the other object with the address.

3. The computing system of claim 1 , wherein the processing circuitry is further configured to:

detect a request to instantiate a new object;

associate a new pool of addresses with the new object, wherein the new pool of addresses includes a plurality of addresses for use by the new object, wherein none of the addresses in the new pool of addresses is available for use by the object, and wherein none of the addresses in the pool of addresses associated with the object is available for use by the new object; and

configure the new object with an address drawn from the new pool of addresses.

4. The computing system of claim 3 , wherein the processing circuitry is further configured to:

enable the new object to service a network request sent to the address drawn from the new pool of addresses;

configure a failover object from the plurality of objects with the address drawn from the new pool of addresses; and

enable the failover object, after configuring the failover object with the address, to service network requests sent to the address drawn from the new pool of addresses.

5. The computing system of claim 4 , wherein to configure the failover object, the processing circuitry is further configured to:

determine that the new object has failed; and

responsive to determining that the new object has failed, configure the failover object with the address drawn from the new pool of addresses.

6. The computing system of claim 5 , wherein to detect the request to instantiate the new object, the processing circuitry is further configured to:

determine that the request includes information enabling identification of the new pool of addresses.

7. The computing system of claim 6 , wherein to determine that the request includes information enabling identification of the new pool of addresses, the processing circuitry is further configured to:

determine that the request includes an annotation.

8. The computing system of claim 1 , wherein to associate the pool of addresses with the object, the processing circuitry is further configured to:

associate the pool of addresses with the object so that none of the addresses in the pool of addresses is available for use by any other object in the plurality of objects.

9. The computing system of claim 1 , wherein to enable the object to service a request sent to the address, the processing circuitry is further configured to:

direct network traffic to the object.

10. The computing system of claim 1 , wherein to enable the other object to service requests sent to the address, the processing circuitry is further configured to direct network traffic to the other object.

11. The computing system of claim 1 ,

wherein each of the plurality of objects is associated with a different virtual network.

12. The computing system of claim 1 ,

wherein each of the plurality of objects is associated with a different namespace.

13. Non-transitory computer-readable media comprising instructions that, when executed, configure processing circuitry of a computing system to:

create an object in a virtualized computing infrastructure, where the object is isolated to prevent access by any other object in a plurality of objects, and wherein the plurality of objects includes the object;

associate a pool of addresses with the object, wherein the pool includes a plurality of addresses for use by the object;

configure the object with an address drawn from the pool of addresses;

enable the object to service a request sent to the address;

configure another object from the plurality of objects with the address; and

enable the other object, after configuring the other object with the address, to service requests sent to the address.

14. The non-transitory computer-readable media of claim 13 , wherein the instructions that cause the processing circuitry to configure the other object with the address further include instructions that, when executed, cause the processing circuitry to:

determine that the object is not available to service requests sent to the address; and

responsive to determining that the object is not available, configure the other object with the address.

15. The non-transitory computer-readable media of claim 13 , further comprising instructions that, when executed, configure processing circuitry of a computing system to:

detect a request to instantiate a new object;

associate a new pool of addresses with the new object, wherein the new pool of addresses includes a plurality of addresses for use by the new object, and wherein none of the addresses in the new pool of addresses is available for use by the object, and wherein none of the addresses in the pool of addresses associated with the object is available for use by the new object; and

configure the new object with an address drawn from the new pool of addresses.

16. The non-transitory computer-readable media of claim 15 , further comprising instructions that, when executed, configure processing circuitry of a computing system to:

enable the new object to service a request sent to the address drawn from the new pool of addresses;

configure a failover object from the plurality of objects with the address drawn from the new pool of addresses; and

enable the failover object, after configuring the failover object with the address, to service requests sent to the address drawn from the new pool of addresses.

17. A method comprising:

creating, by a computing system, an object in a virtualized computing infrastructure, where the object is isolated to prevent access by any other object in a plurality of objects, and wherein the plurality of objects includes the object;

associating, by the computing system, a pool of addresses with the object, wherein the pool includes a plurality of addresses for use by the object;

configuring, by the computing system, the object with an address drawn from the pool of addresses;

enabling, by the computing system, the object to service a request sent to the address;

configuring, by the computing system, another object from the plurality of objects with the address; and

enabling, by the computing system and after configuring the other object with the address, the other object to service requests sent to the address.

18. The method of claim 17 , wherein configuring the other object with the address includes:

determining that the object is not available to service requests sent to the address; and

responsive to determining that the object is not available, configuring the other object with the address.

19. The method of claim 17 , further comprising:

detecting, by the computing system, a request to instantiate a new object;

associating, by the computing system, a new pool of addresses with the new object, wherein the new pool of addresses includes a plurality of addresses for use by the new object, and wherein none of the addresses in the new pool of addresses is available for use by the object, and wherein none of the addresses in the pool of addresses associated with the object is available for use by the new object; and

configuring, by the computing system, the new object with an address drawn from the new pool of addresses.

20. The method of claim 19 , further comprising:

enabling, by the computing system, the new object to service a request sent to the address drawn from the new pool of addresses;

configuring, by the computing system, a failover object from the plurality of objects with the address drawn from the new pool of addresses; and

enabling the failover object, by the computing system and after configuring the failover object with the address, to service requests sent to the address drawn from the new pool of addresses.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 18, 2025
From: GAWADE, ANIKET J.; MARIAPPAN, YUVARAJA; VAIDYA, SACHCHIDANAND
To: JUNIPER NETWORKS, INC.
Reel/Frame 071762/0343 →
Continuity (3)
Continuation 18343883 · Jun 29, 2023
Continuation 17657478 · Mar 31, 2022
Continuation 16145609 · Sep 28, 2018
References Cited (48)
US 9276816B1 · Conte et al. · 2016 [cited by applicant]
US 9479457B2 · Sindhu · 2016 [cited by applicant]
US 9571394B1 · Sivaramakrishnan et al. · 2017 [cited by applicant]
US 9692729B1 · Chen et al. · 2017 [cited by applicant]
US 10013189B1 · Yang et al. · 2018 [cited by applicant]
US 10025924B1 · Vagin et al. · 2018 [cited by applicant]
US 10146936B1 · Khanduja · 2018 [cited by applicant]
US 10191778B1 · Yang et al. · 2019 [cited by applicant]
US 10362092B1 · Parthasarathy · 2019 [cited by applicant]
US 10423493B1 · Vig et al. · 2019 [cited by applicant]
US 10616072B1 · Lo et al. · 2020 [cited by applicant]
US 10728145B2 · Rao et al. · 2020 [cited by applicant]
US 10791144B1 · Golan et al. · 2020 [cited by applicant]
US 10805181B2 · Boutros et al. · 2020 [cited by applicant]
US 11159366B1 · Gawade et al. · 2021 [cited by applicant]
US 11316822B1 · Gawade et al. · 2022 [cited by applicant]
US 11716309B1 · Gawade et al. · 2023 [cited by applicant]
US 12010093B1 · Gawade et al. · 2024 [cited by applicant]
US 20080151893A1 · Nordmark et al. · 2008 [cited by applicant]
US 20120042054A1 · Kotha et al. · 2012 [cited by applicant]
US 20130332577A1 · Nakil et al. · 2013 [cited by applicant]
US 20150370586A1 · Cooper et al. · 2015 [cited by applicant]
US 20150372935A1 · Åkervik et al. · 2015 [cited by applicant]
US 20160105393A1 · Thakkar et al. · 2016 [cited by applicant]
US 20160182279A1 · Gong et al. · 2016 [cited by applicant]
US 20170041288A1 · Stotski et al. · 2017 [cited by applicant]
US 20170244593A1 · Rangasamy et al. · 2017 [cited by applicant]
US 20170373940A1 · Shahab et al. · 2017 [cited by applicant]
US 20180084084A1 · Sharma · 2018 [cited by applicant]
US 20180139174A1 · Thakkar et al. · 2018 [cited by applicant]
US 20180159729A1 · Deshmukh et al. · 2018 [cited by applicant]
US 20190065323A1 · Dhamdhere et al. · 2019 [cited by applicant]
US 20190182207A1 · Tsirkin · 2019 [cited by examiner]
US 20190392150A1 · Shevade et al. · 2019 [cited by applicant]
US 20200127921A1 · Zhu · 2020 [cited by examiner]
WO 2013184846A1 · 2013 [cited by applicant]
WO WO2022203937A1 · 2022 [cited by examiner]
“Juniper/Contrail-Specs/kubernetes-5.0.md” GitHub, Apr. 26, 2018, available at https://github.com/Juniper/contrail-specs/blob/master/kubernetes-5.0.md (last accessed Sep. 26, 2018), 3 pp. [cited by applicant]
“Services, Load Balancing, and Networking—Kubernetes”, The Kubernetes Authors, available at https://kubernetes.io/docs/concepts/services-networking/ (last accessed Sep. 26, 2018), May 5, 2018, 19 pp. [cited by applicant]
“PCI-SIG SR-IOV Primer: An Introduction to SR-IOV Technology,” Rev. 2.5, Intel Corp., Jan. 2011, 28 pp. [cited by applicant]
Chang, Chia-Chen, Shun-Ren Yang, En-Hau Yeh, Phone Lin, and Jeu-Yih Jeng. “A kubemetes-based monitoring platform for dynamic cloud resource provisioning.” In GLOBECOM 2017-2017 IEEE Global Communications Conference, pp.… [cited by applicant]
Mackie et al., “BGP-Signaled End-System IP/VPNs,” draft-ietf-13vpn-end-system-06, Dec. 15, 2016, 31 pp. [cited by applicant]
Marmol et al., “Networking in containers and container clusters.” In Proceedings of netdev 0.1, Feb. 14-17, 2015, 4 pp. [cited by applicant]
Notice of Allowance from U.S. Appl. No. 18/343,883 dated Feb. 15, 2024, 9 pp. [cited by applicant]
Prosecution History from U.S. Appl. No. 16/145,609, dated Dec. 31, 2019 through Dec. 20, 2021, 90 pp. [cited by applicant]
Prosecution History from U.S. Appl. No. 17/657,478, dated Mar. 13, 2023, 11 pp. [cited by applicant]
Rosen et al. “BGP/MPLS IP Virtual Private Networks (VPNs),” Request for Comments 4364, Internet Engineering Task Force Network Working Group, Feb. 2006, 47 pp. [cited by applicant]
Singla et al. “OpenContrail Architecture Document” Architecture Documentation, Nov. 20, 2013, 42 pp. [cited by applicant]