IP Library Granted Patent US 9,591,030
Granted Patent B1
US 9,591,030 · App. 15/042,894 · Granted Mar 7, 2017

Lock-free updates to a domain name blacklist

Inventor: Vernon Schryver (Boulder, CO)
Assignee: FARSIGHT SECURITY, INC.
H04L63/205G06F17/30117G06F17/30345H04L61/1511H04L63/101
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 9,591,030
App. No.
15/042,894
Granted
Mar 7, 2017
Kind
B1
Abstract

A computer-implemented method updates a domain name system blacklist in a lock-free manner is disclosed. In the method, an entry of the domain name blacklist is read at a DNS resolver in a plurality of DNS resolvers. The entry specifies a policy for the DNS resolver to execute when the DNS resolver receives a request to resolve a domain name. Before the reading is complete, an updated entry of the domain name blacklist is received, a new record to the domain name blacklist is added, and the entry being read is placed into a garbage pool having a current version number. Independently from the reading of the entry, the current version number is incremented and a new garbage pool is created for the incremented version number. When the reading is complete, the current version number is assigned to the DNS resolver.

Claims (73)

1. A computer-implemented method for lock-free updates to a domain name blacklist, comprising:

(a) receiving a query from a DNS resolver to determine whether a domain name is blacklisted;

(b) providing an updated domain name entry of the domain name blacklist corresponding to the query, the entry specifying a policy for the DNS resolver to execute when the DNS resolver receives a request to resolve the domain name; before the providing is complete:

(c) adding a new record to the domain name blacklist;

(d) placing the entry being read into a garbage pool having a current version number; independently from the providing (b):

(e) modifying the current version number;

(f) creating a new garbage pool for the modified version number; and

(g) when the providing is complete, assigning a most recent version number to the DNS resolver.

2. The method of claim 1 , further comprising:

before receiving the query request in (a):

(h) receiving a subscription message from the DNS resolver in a plurality of DNS resolvers, the subscription message indicating a request to provide domain name blacklist data associated with at least one policy zone,

(i) allocating a version entry for the DNS resolver in a shared version table,

(j) populating the version entry with a version number of the DNS resolver; and

(k) sending an index to a location where the version entry is stored.

3. The method of claim 2 , further comprising, periodically:

(l) determining the earliest version number of all the DNS resolvers in the plurality of DNS resolvers; and

(m) deleting entries placed into garbage pools having version numbers earlier than the earliest version number determined in (l).

4. The method of claim 2 , wherein the populating the version entry with the version number (j) comprises assigning the most recent version number to the indexed location.

5. The method of claim 3 , further comprising, periodically:

(n) determining whether an age of the earliest version number of all the DNS resolvers in the plurality of DNS resolvers exceeds a threshold;

when the age of the earliest version number is determined to exceed the threshold:

(o) copying the garbage pool having the earliest version number for the DNS resolvers; and

(p) deleting the garbage pool having the earliest version number.

6. The method of claim 1 , wherein steps (e) and (f) occur periodically.

7. The method of claim 5 , further comprising sending a signal to a DNS resolver associated with the earliest version number, the signal requesting that the DNS resolver cancels its current read.

8. The computer-implemented method of claim 7 , wherein the policy comprises at least a determination of whether to resolve the domain name.

9. The computer-implemented method of claim 8 , wherein the policy further comprises a determination to redirect the request, by returning an IP address of a website indicating that a domain associated with the domain name is suspicious.

10. A non-transitory computer-readable medium having instructions stored thereon that, when executed by at least one computing device, causes the at least one computing device to perform a method for lock-free updates to a domain name blacklist, the method comprising:

(a) receiving a query from a DNS resolver to determine whether a domain name is blacklisted;

(b) providing an updated domain name entry of the domain name blacklist corresponding to the query, the entry specifying a policy for the DNS resolver to execute when the DNS resolver receives a request to resolve the domain name; before the providing is complete:

(c) adding a new record to the domain name blacklist;

(d) placing the entry being read into a garbage pool having a current version number; independently from the providing (b):

(e) modifying the current version number;

(f) creating a new garbage pool for the modified version number; and

(g) when the providing is complete, assigning a most recent version number to the DNS resolver.

11. The computer-readable medium of claim 10 , the method further comprising:

before receiving the query request in (a):

(h) receiving a subscription message from the DNS resolver in a plurality of DNS resolvers, the subscription message indicating a request to provide domain name blacklist data associated with at least one policy zone,

(i) allocating a version entry for the DNS resolver in a shared version table,

(j) populating the version entry with a version number of the DNS resolver; and

(k) sending an index to a location where the version entry is stored.

12. The computer-readable medium of claim 11 , the method further comprising, periodically:

(l) determining the earliest version number of all the DNS resolvers in the plurality of DNS resolvers; and

(m) deleting entries placed into garbage pools having version numbers earlier than the earliest version number determined in (l).

13. The computer-readable medium of claim 11 , wherein the populating the version entry with the version number (j) comprises assigning the most recent version number to the indexed location.

14. The computer-readable medium of claim 12 , the method further comprising, periodically:

(n) determining whether an age of the earliest version number of all the DNS resolvers in the plurality of DNS resolvers exceeds a threshold;

when the age of the earliest version number is determined to exceed the threshold:

(o) copying the garbage pool having the earliest version number for the DNS resolvers; and

(p) deleting the garbage pool having the earliest version number.

15. A computer-implemented method for lock-free updates to a shared memory, comprising:

(a) reading, at a reader thread in a plurality of reader threads, an entry of the shared memory;

before the reading is complete:

(b) receiving an updated entry of the shared memory;

(c) adding a new record to the shared memory;

(d) placing the entry being read into a garbage pool having a current version number;

independently from the reading (a):

(e) modifying the current version number;

(f) creating a new garbage pool for the modified version number;

(g) when the reading is complete, assigning a most recent version number to the reader thread.

16. The computer-implemented method of claim 15 , further comprising:

(h) for each reader thread in the plurality of reader threads, allocating a respective version entry in a shared version table, and

(i) populating the respective version entry with a version number of the shared memory.

17. The computer-implemented method of claim 16 , further comprising: periodically:

(j) determining the earliest version number of all the reader threads in the plurality of reader threads; and

(k) deleting entries placed into garbage pools having version numbers earlier than the earliest version number determined in (j).

18. The computer-implemented method of claim 15 , wherein steps (e) and (f) occur periodically.

19. The computer-implemented method of claim 16 , further comprising:

(j) determining whether an age of the earliest version number of all the reader threads in the plurality of reader threads exceeds a threshold;

when the age of the earliest version number is determined to exceed the threshold:

(k) copying the garbage pool having the earliest version number for the reader thread; and

(l) deleting the garbage pool having the earliest version number.

20. The computer-implemented method of claim 15 , wherein placing the entry being read into the garbage pool (d) comprises designating a memory location containing the entry to the garbage pool.

Assignments (3)
SECURITY INTEREST Recorded Oct 14, 2025
From: DOMAINTOOLS, LLC; FARSIGHT SECURITY, INC.
To: FIRST-CITIZENS BANK & TRUST COMPANY
Reel/Frame 072569/0441 →
SECURITY INTEREST Recorded Feb 22, 2022
From: FARSIGHT SECURITY, INC.
To: SILICON VALLEY BANK
Reel/Frame 059060/0333 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 18, 2016
From: SCHRYVER, VERNON
To: FARSIGHT SECURITY, INC.
Reel/Frame 037761/0502 →
Continuity (1)
Continuation 14829103 · Aug 18, 2015