IP Library › Granted Patent US 12,192,168
Granted Patent B1
US 12,192,168 · App. 18/600,535 · Granted Jan 7, 2025

Unified programmable dynamic context-aware configuration for domain name service

Inventor: Adriano Monteiro Marques (Cedar Park, TX)
H04L61/4511H04L47/125
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,192,168
App. No.
18/600,535
Granted
Jan 7, 2025
Kind
B1
Abstract

A method includes identifying, by a Domain Name Service (DNS) server, a dynamic configuration file. The method further includes receiving, by the DNS server from a first client device, a first request for a network resource. The first request includes first client context associated with the first client device. The method further includes identifying, by the DNS server based on the network resource of the first request, a dynamic variable in the dynamic configuration file. The dynamic variable includes one or more algorithmically-defined rules. The method further includes determining, by the DNS server based on at least one of the one or more algorithmically-defined rules of the dynamic variable and the first client context, a first response to the first request. The method further includes providing, by the DNS server, the first response to the first client device.

Claims (76)

1. A method comprising:

receiving, by a Domain Name Service (DNS) server, a dynamic configuration file from a domain administrator device;

loading, by the DNS server, the dynamic configuration file in memory;

receiving, by the DNS server from a first client device, a first request for a network resource, the first request comprising first client context associated with the first client device;

identifying, by the DNS server based on the network resource of the first request, a dynamic variable in the dynamic configuration file, the dynamic variable comprising one or more algorithmically-defined rules;

executing, by the DNS server, at least one of the one or more algorithmically-defined rules of the dynamic variable to determine, based on the first client context, a first response to the first request; and

providing, by the DNS server, the first response to the first client device.

2. The method of claim 1 , wherein the first client device is to access a first instance of the network resource based on the first response.

3. The method of claim 1 further comprising:

receiving, by the DNS server from a second client device, a second request for the network resource, the second request comprising second client context associated with the second client device;

identifying, by the DNS server based on the second request, the dynamic variable in the dynamic configuration file;

executing, by the DNS server, one or more corresponding algorithmically-defined rules of the dynamic variable to determine, based on the second client context, a second response to the second request; and

providing, by the DNS server, the second response to the second client device.

4. The method of claim 3 , wherein:

the first client device is to access a first instance of the network resource based on the first response; and

the second client device is to access a second instance of the network resource based on the second response; and

the first instance being located at a first location and the second instance being located at a second location that is different from the first location.

5. The method of claim 1 , wherein:

the first request is associated with resolving a domain name to access the network resource via a network;

the first response is associated with a first domain name resolution to obtain the network resource from a first location; and

the first client device is to obtain the network resource via the network from the first location based on the first domain name resolution.

6. The method of claim 5 further comprising updating a cache of the DNS server with the first domain name resolution associated with the domain name to be used for a subsequent request to access the network resource, wherein the subsequent request comprises subsequent client context similar to the first client context.

7. The method of claim 1 , wherein the network resource is a domain record.

8. The method of claim 1 , further comprising:

prior to the executing of the at least one of the one or more algorithmically-defined rules of the dynamic variable to determine of the first response, adapting, via a pre-processing filter, at least one of the first request or the first client context; and

subsequent to the executing of the at least one of the one or more algorithmically-defined rules of the dynamic variable to determine of the first response, modifying, via a post-processing filter, the first response.

9. The method of claim 1 , wherein the executing of the at least one of the one or more algorithmically-defined rules of the dynamic variable to determine the first response is based on proximity of available servers to a location of the first client device.

10. The method of claim 1 , wherein:

the dynamic variable further comprises a one or more load-balancing rules; and

the executing of the at least one of the one or more algorithmically-defined rules of the dynamic variable to determine the first response is further based on at least one of the one or more load-balancing rules.

11. The method of claim 1 , wherein:

the executing of the at least one of the one or more algorithmically-defined rules of the dynamic variable to determine the first response is further based on a status of static status, fully dynamic status, or semi-dynamic status;

the static status is associated with a first domain name resolution that is saved to cache subsequent to successful domain name resolution;

the fully dynamic status is associated with the first domain name resolution that is saved to the cache based on the first client context of the first request; and

the semi-dynamic status is associated with one or more cache saving rules that are determined by a Domain Administrator.

12. The method of claim 1 , wherein:

the dynamic variable is a dynamic domain zone record configuration associated with a plurality of network resource hosts; and

the method further comprises determining one or more first hosts of the plurality of network resource hosts that pass health checks and indicating the first hosts as being eligible to be considered for the first response.

13. The method of claim 1 further comprising storing the first response in a cache memory to be used for a subsequent request for the network resource, wherein the subsequent request comprises subsequent client context similar to the first client context.

14. The method of claim 1 further comprising;

monitoring changes to the dynamic configuration file; and

deploying the changes responsive to determining that the changes are eligible for deployment.

15. A non-transitory machine-readable storage medium storing instructions which, when executed, cause a processing device of a Domain Name Service (DNS) server to perform operations comprising:

receiving a dynamic configuration file from a domain administrator device;

loading the dynamic configuration file in memory;

receiving, from a first client device, a first request for a network resource, the first request comprising first client context associated with the first client device;

identifying, based on the network resource of the first request, a dynamic variable in the dynamic configuration file, the dynamic variable comprising one or more algorithmically-defined rules;

executing at least one of the one or more algorithmically-defined rules of the dynamic variable to determine, based on the first client context, a first response to the first request; and

providing the first response to the first client device.

16. The non-transitory machine-readable storage medium of claim 15 , wherein the operations further comprise:

receiving, from a second client device, a second request for the network resource, the second request comprising second client context associated with the second client device;

identifying, based on the second request, the dynamic variable in the dynamic configuration file;

executing one or more corresponding algorithmically-defined rules of the dynamic variable to determine, based on the second client context, a second response to the second request; and

providing the second response to the second client device.

17. The non-transitory machine-readable storage medium of claim 16 , wherein:

the first client device is to access a first instance of the network resource based on the first response; and

the second client device is to access a second instance of the network resource based on the second response; and

the first instance being located at a first location and the second instance being located at a second location that is different from the first location.

18. A Domain Name Service (DNS) server comprising:

memory; and

a processing device coupled to the memory, the processing device to:

receive a dynamic configuration file from a domain administrator device;

load the dynamic configuration file in the memory;

receive, from a first client device, a first request for a network resource, the first request comprising first client context associated with the first client device;

identify, based on the network resource of the first request, a dynamic variable in the dynamic configuration file, the dynamic variable comprising one or more algorithmically-defined rules;

execute at least one of the one or more algorithmically-defined rules of the dynamic variable to determine, based on the first client context, a first response to the first request; and

provide the first response to the first client device.

19. The DNS server of claim 18 , wherein the processing device is further to:

receive, from a second client device, a second request for the network resource, the second request comprising second client context associated with the second client device;

identify, based on the second request, the dynamic variable in the dynamic configuration file;

execute one or more corresponding algorithmically-defined rules of the dynamic variable to determine, based on the second client context, a second response to the second request; and

provide the second response to the second client device.

20. The DNS server of claim 19 , wherein:

the first client device is to access a first instance of the network resource based on the first response; and

the second client device is to access a second instance of the network resource based on the second response; and

the first instance being located at a first location and the second instance being located at a second location that is different from the first location.

Continuity (1)
Provisional Application 63604350 · Nov 30, 2023
References Cited (104)
US 6012088A · Li · 2000 [cited by examiner]
US 6014660A · Lim · 2000 [cited by examiner]
US 6023724A · Bhatia · 2000 [cited by examiner]
US 6028848A · Bhatia · 2000 [cited by examiner]
US 6029203A · Bhatia · 2000 [cited by examiner]
US 6052803A · Bhatia · 2000 [cited by examiner]
US 6070191A · Narendran · 2000 [cited by examiner]
US 6094659A · Bhatia · 2000 [cited by examiner]
US 6108330A · Bhatia · 2000 [cited by examiner]
US 6118768A · Bhatia · 2000 [cited by examiner]
US 6272523B1 · Factor · 2001 [cited by examiner]
US 6360256B1 · Lim · 2002 [cited by examiner]
US 6396830B2 · Aravamudan · 2002 [cited by examiner]
US 6411966B1 · Kwan · 2002 [cited by examiner]
US 6560634B1 · Broadhurst · 2003 [cited by examiner]
US 6643694B1 · Chernin · 2003 [cited by examiner]
US 6684243B1 · Euget · 2004 [cited by examiner]
US 6701329B1 · Esibov · 2004 [cited by examiner]
US 6741853B1 · Jiang · 2004 [cited by examiner]
US 6769031B1 · Bero · 2004 [cited by examiner]
US 6802068B1 · Guruprasad · 2004 [cited by examiner]
US 6836806B1 · Raciborski · 2004 [cited by examiner]
US 6865594B1 · Belissent · 2005 [cited by examiner]
US 6888836B1 · Cherkasova · 2005 [cited by examiner]
US 6895431B1 · Bero · 2005 [cited by examiner]
US 6961783B1 · Cook · 2005 [cited by examiner]
US 7003562B2 · Mayer · 2006 [cited by examiner]
US 7007080B2 · Wilson · 2006 [cited by examiner]
US 7010585B2 · Asami · 2006 [cited by applicant]
US 7013343B2 · Shigezumi · 2006 [cited by examiner]
US 7027582B2 · Khello · 2006 [cited by examiner]
US 7117227B2 · Call · 2006 [cited by examiner]
US 7304984B2 · Butler · 2007 [cited by examiner]
US 7330908B2 · Jungck · 2008 [cited by applicant]
US 7352853B1 · Shen · 2008 [cited by examiner]
US 7359987B2 · Stahura · 2008 [cited by examiner]
US 7441045B2 · Skene · 2008 [cited by examiner]
US 7478148B2 · Neerdaels · 2009 [cited by examiner]
US 7636936B2 · Wright · 2009 [cited by examiner]
US 7720997B1 · Gourlay · 2010 [cited by examiner]
US 7734730B2 · McCanne · 2010 [cited by examiner]
US 7818435B1 · Jellinek · 2010 [cited by examiner]
US 8296451B2 · Lowery · 2012 [cited by examiner]
US 8489637B2 · Patil · 2013 [cited by applicant]
US 8522034B2 · Erlingsson · 2013 [cited by examiner]
US 8645517B2 · Stolorz · 2014 [cited by examiner]
US 8725836B2 · Lowery · 2014 [cited by examiner]
US 8856222B2 · McCanne · 2014 [cited by examiner]
US 9021070B2 · Selgas · 2015 [cited by examiner]
US 9396476B2 · Walker · 2016 [cited by examiner]
US 9479422B2 · Sundaresan et al. · 2016 [cited by applicant]
US 9906605B2 · Nguyen et al. · 2018 [cited by applicant]
US 10212123B2 · Baughman et al. · 2019 [cited by applicant]
US 10284520B2 · Reddy · 2019 [cited by applicant]
US 10516751B2 · Morton · 2019 [cited by examiner]
US 10521453B1 · Bush · 2019 [cited by examiner]
US 10666608B2 · Townsend et al. · 2020 [cited by applicant]
US 10728206B2 · Dhanabalan · 2020 [cited by applicant]
US 10728287B2 · Foxhoven et al. · 2020 [cited by applicant]
US 10826748B2 · Alao · 2020 [cited by examiner]
US 10893017B2 · George, IV et al. · 2021 [cited by applicant]
US 10931786B1 · Vasquez · 2021 [cited by examiner]
US 11128597B1 · Johnson · 2021 [cited by examiner]
US 11269781B1 · Lercari et al. · 2022 [cited by applicant]
US 20090113075A1 · Migault · 2009 [cited by examiner]
US 20120191874A1 · Robinson · 2012 [cited by examiner]
US 20130297596A1 · Mouline · 2013 [cited by examiner]
US 20140280916A1 · Balasubramanian · 2014 [cited by examiner]
US 20150215276A1 · Bhagwat · 2015 [cited by examiner]
US 20150244671A1 · Sinn · 2015 [cited by examiner]
US 20150350154A1 · Myla · 2015 [cited by examiner]
US 20160087937A1 · Rodriguez · 2016 [cited by examiner]
US 20160308819A1 · Gupta · 2016 [cited by examiner]
US 20170331788A1 · Lemon · 2017 [cited by examiner]
US 20180324137A1 · Tuliani · 2018 [cited by examiner]
US 20180337885A1 · Singh · 2018 [cited by examiner]
US 20190097933A1 · Rutkowski · 2019 [cited by examiner]
US 20190132281A1 · Sawyer · 2019 [cited by examiner]
US 20190166215A1 · Johnson · 2019 [cited by examiner]
US 20200036778A1 · Flavel · 2020 [cited by examiner]
US 20200220839A1 · Sawyer · 2020 [cited by examiner]
US 20200366637A1 · Dhanabalan · 2020 [cited by examiner]
US 20210092134A1 · Ludwig · 2021 [cited by examiner]
US 20210105248A1 · Brown · 2021 [cited by examiner]
US 20220182354A1 · Fayed · 2022 [cited by examiner]
US 20230231856A1 · Kaliski, Jr. · 2023 [cited by examiner]
US 20230291738A1 · Pelzel · 2023 [cited by examiner]
US 20240022541A1 · Lee · 2024 [cited by examiner]
US 20240121265A1 · Holloway · 2024 [cited by examiner]
EP 1125421B1 · 2006 [cited by applicant]
EP 3646573B1 · 2020 [cited by applicant]
JP 4668775B2 · 2011 [cited by applicant]
Web: “How do you implement DNS geolocation for dynamic and static content?”, Domain Name System (DNS), Dec. 12, 2023, 06 pages, [Downloaded on Jan. 4, 2020] Retrieved from [URL: https://www.linkedin.com/advice/0/how-do-… [cited by applicant]
Web: “Could a name server resolve IP addresses dynamically based on some strategy?”, Server Fault, Sep. 20, 2021, 06 pages, [Downloaded on Apr. 4, 2024] Retrieved from [URL: https://serverfault.com/questions/941506/coul… [cited by applicant]
Web: “Use DNS Policy for Geo-Location Based Traffic Management with Primary Servers”, Learn, Dec. 12, 2023, 07 pages, [Downloaded on Apr. 4, 2024] Retrieved from [URL: https://learn.microsoft.com/en-us/windows-server/ne… [cited by applicant]
Web: “apple/pkl”, GitHub, 04 pages, [Downloaded on Apr. 4, 2024] Retrieved from [URL: https://github.com/apple/pkl]. [cited by applicant]
Web: “Dynamic DNS”, Wikipedia, Apr. 4, 2024, 05 pages, [Downloaded on Apr. 4, 2024] Retrieved from [URL: https://en.wikipedia.org/wiki/Dynamic_DNS]. [cited by applicant]
Youtube: “Introducing Reverse Proxy Servers,” Oct. 5, 2012, 4 pages, [Downloaded on Apr. 4, 2024] Retrieved from [URL: https://www.youtube.com/watch?v=9rOU_P5YN_Q]. [cited by applicant]
Youtube: “Anycast vs Global Server Load Balancing on the Brightboard,” Dec. 1, 2022, 12 pages, [Downloaded on Apr. 4, 2024] Retrieved from [URL: https://www.youtube.com/watch?v=-2WnHiKPrgE]. [cited by applicant]
Web: “Cloud-Based Primary and Secondary Authoritative Dns”, F5, 06 pages, [Downloaded on Apr. 4, 2024] Retrieved from [URL: https://www.f5.com/cloud/products/dns]. [cited by applicant]
Web: “CoreDNS: DNS and Service Discovery”, CoreDNS, 04 pages, [Downloaded on Apr. 4, 2024] Retrieved from [URL: https://coredns.io]. [cited by applicant]
Web: “CoreDNS Manual”, CoreDNS, 23 pages, [Downloaded on Apr. 4, 2024] Retrieved from [URL: https://coredns.io/manual/toc/#authoritative-serving-from-files]. [cited by applicant]
Web: “Dynamic DNS”, Cloud Flare, 4 pages, [Downloaded on Apr. 4, 2024] Retrieved from [URL: https://www.cloudflare.com/learning/dns/glossary/dynamic-dns/]. [cited by applicant]
Web: “Pkl Introduction”, 01 page, [Downloaded on May 2, 2024] Retrieved from [https://pkl-lang.org/main/current/introduction/]. [cited by applicant]