US20240015135A1 - Domain management and synchronization system - Google Patents
Domain management and synchronization system Download PDFInfo
- Publication number
- US20240015135A1 US20240015135A1 US18/352,671 US202318352671A US2024015135A1 US 20240015135 A1 US20240015135 A1 US 20240015135A1 US 202318352671 A US202318352671 A US 202318352671A US 2024015135 A1 US2024015135 A1 US 2024015135A1
- Authority
- US
- United States
- Prior art keywords
- dns
- server
- records
- record
- domain
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4552—Lookup mechanisms between a plurality of directories; Synchronisation of directories, e.g. metadirectories
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5007—Internet protocol [IP] addresses
Definitions
- Electronic devices may be used to exchange information over communication networks, such as the internet.
- computing devices may use network addresses, such as internet protocol (“IP”) addresses, to send communications to each other.
- IP internet protocol
- the sending device addresses the communication to the network address of the receiving device.
- the communication is then sent via a communication network to the receiving device.
- Intermediary components of the communication network infrastructure e.g., routers, switches, and the like
- one computing device may be instructed to communicate with another computing device without first being provided the network address of the receiving device.
- a sending device may be provided with a name of the receiving device, such as a domain name.
- the sending device may determine the network address of the receiving device by requesting the network address from a domain name system (“DNS”) name server.
- DNS domain name system
- the DNS name server may respond to the request by providing the network address that is associated with the domain name.
- the sending device may then send the communication to the receiving device using the network address obtained from the DNS name server.
- FIG. 1 is a block diagram of an illustrative network environment including a domain management system and various DNS servers according to some embodiments.
- FIG. 2 is a block diagram of various data flows and interactions between the domain management system and various DNS servers to obtain domain data according to some embodiments.
- FIG. 3 is a block diagram of various data flows and interactions between the domain management system and various DNS servers to determine that domain data has changed according to some embodiments.
- FIG. 4 is a flow diagram of an illustrative process for managing domain data according to some embodiments.
- FIG. 5 is a block diagram of various data flows and interactions between the domain management system and various DNS servers to synchronize domain data according to some embodiments.
- FIG. 6 is a block diagram of a computing system that may be used to implement the domain management system or portions thereof according to some embodiments.
- the present disclosure is directed to a domain management system that manages domain names, network addresses, and other aspects of a computing network domain.
- the domain management system obtains domain data, such as domain name system (“DNS”) records, from any number of network-accessible providers of the domain data, such as DNS name servers.
- DNS domain name system
- the domain management system can store, transform, and synchronize the domain data among the network-accessible providers, even if the network-accessible providers do not all use or recognize the same format and/or content of domain data.
- a computing network domain also referred to herein as a “domain” for convenience—may be associated with any number of sub-domains (e.g., sub-domain-1.example.com, sub-domain-2.example.com, etc.), any of which may be associated with its own sub-domains, and any or all of which may be associated with different network addresses.
- a domain may provide different computing services, including content hosting, email, file access via different protocols, and the like. Any or all of these services may be associated with a different network address and/or a different type of DNS record.
- a single domain may encompass dozens, hundreds, or more individual network addresses and/or DNS records.
- Domains use the services of network-accessible DNS name servers—also referred to simply as DNS servers for convenience—to manage domain data for the domains.
- DNS servers also referred to simply as DNS servers for convenience—to manage domain data for the domains.
- a particular domain such as “example.com” may have a particular DNS server designated as the authoritative DNS server for network address data for the domain.
- User-friendly names and descriptors such as those in a uniform resource locator (“URL”) or other uniform resource identifier (“URI”), may then be used in lieu of specific network addresses, such as internet protocol (“IP”) addresses, to access individual resources of the domain.
- IP internet protocol
- a URL for the “index.html” resource of the “example.com” domain may include the domain name concatenated with the name of the resource: “example.com/index.html.”
- a requesting computing device may be directed to contact the authoritative DNS server for the domain, directly or indirectly (e.g., through a series of recursive DNS lookup operations to various DNS servers such as a root name server, top-level-domain name server, etc.).
- the computing device may submit a query for the network address assigned to the domain.
- the authoritative DNS server responds to the query by providing a network address (e.g., IP address) to which the domain has been assigned.
- the requesting device may then access the resource using the resolved network address. Without being able to resolve domain names into network addresses from which resources can be accessed, consumers of services provided by the domain may not be able to access the services.
- a DNS server to maximize uptime and meet service level agreements of the domains that it services is to implement redundancy within the DNS server.
- a single DNS server exclusively managing all domain data for a particular domain still represents a single point of failure from the perspective of entities external to the DNS server.
- different DNS servers may support different DNS record types, use different formats for storing DNS records, and may implement other DNS features differently.
- different DNS servers are not configured to synchronize domain data with other DNS servers. Thus, the task of maintaining domain data across multiple DNS servers is unnecessarily inefficient and/or impractical.
- a domain management system can obtain domain data from a particular DNS server in a format that is specific to that DNS server.
- the domain management system can apply one or more transformations to the domain data to generate DNS server-independent domain data.
- the transformations may include re-formatting the data, augmenting the domain data with additional data from another source, de-duplicating or otherwise removing data, generating additional and/or alternative DNS record types, and the like.
- the domain management system can then update any number of other DNS servers with the data so that multiple DNS servers are synchronized with up-to-date domain data.
- the domain management system may transform the DNS server-independent data into a format that is specific to each DNS server that is to be updated.
- the transformations may include re-formatting the data, augmenting the domain data with additional data from another source, de-duplicating or otherwise removing data, generating additional and/or alternative DNS record types, and the like.
- the domain management system can manage the domain data stored among multiple independent DNS servers regardless of whether the DNS servers use or recognize the same format and/or content of domain data.
- the domain management system can subscribe to notifications regarding changes in domain data at individual DNS servers, poll the DNS servers to determine whether domain data has been changed, or obtain information about changes to domain data in some other manner. When a change to domain data is detected, the domain management system can obtain a snapshot of all domain data at the DNS server, or some subset thereof such as the DNS records that have been changed. The domain management system may apply one or more sets of transformations to the domain data to generate DNS server-independent data and/or domain data that can be sent to other DNS servers to ensure data parity between all of the DNS servers—or some subset thereof—managing domain data for the domain. In this way, the domain management system can automatically synchronize domain data among multiple independent DNS servers in response to domain data changing at one of the DNS servers.
- FIG. 1 shows a network environment in which aspects of the present disclosure may be implemented.
- the network environment may include a domain management system 100 and various DNS servers 102 a , 102 b , . . . 102 n .
- the DNS servers 102 a , 102 b , . . . 102 n may be referred to collectively as DNS servers 102 for convenience.
- the domain management system 100 and the various DNS servers 102 may communicate with each other via one or more communication networks 104 .
- a communication network 104 may be a publicly-accessible network of linked networks, possibly operated by various distinct parties, such as the Internet.
- the network 104 may include a private network, personal area network, local area network, wide area network, cable network, satellite network, cellular data network, etc., or a combination thereof, some or all of which may or may not have access to and/or from the Internet.
- the domain management system 100 may include various components for providing the features described herein.
- the domain management system 100 may include a query manager 110 for retrieving domain data from DNS servers 102 .
- the domain management system 100 may also include a listener 112 to monitor DNS servers 102 for changes to domain data stored at the DNS servers 102 .
- the domain management system 100 may also include a transformation processor 114 for determining and applying sets of transformations to server-specific domain data to generate server-independent domain data, and vice versa.
- the domain management system 100 may also include a domain synchronizer 116 for determining the domain data to be sent to one or more DNS servers 102 to ensure that that the domain data maintained by all DNS servers 102 for the domain remains synchronized.
- the domain management system 100 may also include various data stores for storing data and otherwise supporting the operation of components of the domain management system 100 .
- the domain management system 100 may include a DNS data store 120 to store server-independent domain data, information about server-specific domain data formats and requirements, and the like.
- the example components and data stores of the domain management system 100 shown in FIG. 1 are illustrative only, and are not intended to be limiting. In some embodiments, a domain management system 100 may have fewer, additional, and/or alternative components and data stores.
- the domain management system 100 may be implemented on one or more physical server computing devices.
- the domain management system 100 (or individual components thereof, such as the query manager 110 , listener 112 , transformation processor 114 , domain synchronizer 116 , etc.) may be implemented on one or more host devices, such as blade servers, midrange computing devices, mainframe computers, desktop computers, or any other computing device configured to provide computing services and resources.
- a single host device may execute one or more query managers 110 , listeners 112 , transformation processors 114 , domain synchronizers 116 , some combination thereof, etc.
- the domain management system 100 may include any number of such hosts.
- the features and services provided by the domain management system 100 may be implemented as web services consumable via one or more communication networks.
- the domain management system 100 (or individual components thereof) is provided by one more virtual machines implemented in a hosted computing environment.
- the hosted computing environment may include one or more rapidly provisioned and released computing resources, such as computing devices, networking devices, and/or storage devices.
- a hosted computing environment may also be referred to as a “cloud” computing environment.
- the DNS servers 102 may maintain domain data for any number of domains, respond to DNS queries to resolve domain and subdomain names into network address, and the like.
- the domain data may be maintained as a set of DNS records for each domain, subdomain, etc. associated with a given DNS server 102 .
- DNS servers 102 may be implemented on one or more host devices, such as blade servers, midrange computing devices, mainframe computers, desktop computers, or any other computing device configured to provide computing services and resources.
- the features and services provided by one or more of the DNS servers 102 may be implemented as web services consumable via one or more communication networks, and/or provided by a cloud computing environment.
- FIG. 2 shows example data flows and interactions between the domain management system 100 and various DNS servers 102 a and 102 b during acquisition of domain data.
- the domain management system 100 may acquire domain data from a DNS server in order to keep a backup of the domain data, migrate the domain data to a different DNS server, synchronize changes detected by the listener 112 (as described in greater detail below), or in response to some other event or command.
- the query manager 110 can request domain data from DNS server 102 a .
- the query manager 110 may request domain data associated with a particular portion of the total DNS name space.
- the particular portion of the total DNS namespace may also be referred to as a zone.
- the domain management system 100 may manage the domain data for the zone “example.com,” and the query manager 110 may request domain data for the “example.com” zone from DNS server 102 a .
- the query manager 110 may request all of the relevant domain data, or some subset thereof.
- the request may include one or more parameters.
- the parameters may include: a name, descriptor, or identifier for the requested zone; selection or filtering criteria (e.g., dates or date ranges for created, updated, or deprecated DNS records); security credentials (e.g., account identifier, security token, etc.); other data; or some combination thereof.
- selection or filtering criteria e.g., dates or date ranges for created, updated, or deprecated DNS records
- security credentials e.g., account identifier, security token, etc.
- other data or some combination thereof.
- the request may in some cases be an application programming interface (“API”) request to the DNS server 102 a .
- the request may be a REpresentational State Transfer (“REST”) call.
- the request may be a request for a user interface, such as a markup language-based interface (e.g., a hypertext markup language or “HTML” interface).
- the query manager 110 may then parse the markup language-based response to obtain the desired data (e.g., perform a “scraping” procedure whereby the markup language is parsed to identify fields, and data within the fields, that is relevant to the DNS records).
- the query manager 110 may receive a response 202 to the request sent at [A].
- the response 202 may include a listing of all domain data that DNS server 102 a has for the zone that served as the basis for the request, or a subset thereof that satisfies the parameters of the request.
- the domain data may be in the form of one or more DNS records that are responsive to the query.
- the DNS records may be provided in a data structure that is formatted according to a particular framework, such as JavaScript Object Notation (“JSON”), eXtensible Markup Language (“XML”), comma separated values (“CSV”), or some other structured data format.
- JSON JavaScript Object Notation
- XML eXtensible Markup Language
- CSV comma separated values
- the DNS records may be provided according to a format that is unique to DNS server 102 a , or using a particular structure that is unique to DNS server 102 a even if the formatting of the records conforms to a standard such as JSON or XML.
- the DNS records may each include any number of individual data fields.
- a DNS “A” record is used to map a network resource such as a domain name or subdomain name (also referred to as a “host” name) to an IP address for a period of time (also referred to as “time to live” or “TTL”).
- a DNS “CNAME” record maps one host name known as an alias, to another host name known as a canonical name, for a period of time.
- a CNAME record will typically have a data field for the alias name, a data field for the canonical name, and a data field for the TTL.
- Other types of DNS records include PTR records for reverse-lookup of host names mapped to given IP addresses, MX records for mail routing, and TXT records for storing text-based information.
- the example DNS records described in the present disclosure are illustrative only, and are not intended to be limiting.
- the response 202 from the DNS server 102 a provides two A records using a first server-specific format. As shown, the records are separated by hyphens, and individual data fields are separated onto different lines prefixed with the name of the data field.
- the query manager 110 may provide the DNS records received at [B] to the transformation processor 114 .
- the transformation processor 114 can apply a set of transformations to the DNS records so that they may be stored in a server-independent format.
- the query manager 110 may provide the DNS records as-received from the DNS server 102 a .
- the query manager 110 may augment the DNS records or perform some other preliminary processing before providing the DNS records to the transformation processor 114 .
- the query manager 110 may provide an augmented data set 212 that includes the DNS records received from DNS server 102 a , and also includes data indicating the source of the DNS records (DNS server 102 a in this example), the date and time that the records were received, etc.
- the query manager 110 may request domain data from a different DNS server: DNS server 102 b .
- DNS server 102 b may provide redundancy to server 102 a .
- DNS server 102 a may be the authoritative server, and DNS server 102 b may serve as a backup for situations when DNS server 102 A is offline or otherwise unable to respond to DNS queries.
- the query manager 110 may request domain data associated with the same zone as requested from the DNS server 102 a . The request may be made to compare the data with the data received from DNS server 102 a , compare differences, synchronize data among the DNS servers, perform a backup of all domain data, or for some other reason.
- the query manager 110 may receive a response 204 from DNS server 102 b to the request sent at [D].
- the response 204 may include a listing of all domain data that the DNS server 102 b has for the zone that served as the basis for the request, or a subset thereof that satisfies the parameters of the request.
- the domain data may be in the form of one or more DNS records that are responsive to the query.
- different DNS servers may provide DNS records in different formats or structures.
- DNS server 102 b has provided two A records using a second server-specific format that is different than the first server-specific format by which DNS server 102 a provided the same two A records.
- the records are provided with each record being on its own line, and the individual data fields delimited by whitespace such as a tab or space. In this format, the order of the data fields within each record would need to be known to the receiver in order to parse the records.
- the query manager 110 may provide the DNS records received at [E] to the transformation processor 114 .
- the transformation processor 114 can apply a set of transformations to the DNS records so that they may be stored in a server-independent format.
- the query manager 110 may provide the DNS records as-received from the DNS server 102 b .
- the query manager 110 may augment the DNS records or perform some other preliminary processing before providing the DNS records to the transformation processor 114 .
- the query manager 110 may provide an augmented data set 214 that includes DNS records received from DNS server 102 b , and also includes data indicating the source of the DNS records (DNS server 102 b in this example), the date and time that the records were received, etc.
- FIG. 3 shows example data flows and interactions between the domain management system 100 and various DNS servers 102 a and 102 b during monitoring of the domain data maintained by the DNS servers 102 a , 102 b .
- the domain management system 100 may monitor the domain data maintained by the DNS servers 102 a , 102 b —actively or passively—to determine when a change has occurred to the domain data.
- the domain management system 100 can automatically initiate an update process to synchronize domain data across DNS servers once a change has been detected.
- the listener 112 can receive a notification 302 from DNS server 102 a regarding a change to domain data maintained by the DNS server 102 a .
- the domain management system 100 may subscribe to notifications from DNS server 102 a , and the subscribed notifications may be received whenever domain data associated with a particular zone, or otherwise satisfying particular criteria, is changed.
- the domain management system 100 may register with DNS server 102 a to be notified whenever a change occurs to a DNS record associated with a particular zone.
- the listener 112 may be configured to provide a callback function, monitor a message queue, or implement some other process for determining when domain data for a zone has been changed. When such a change occurs, DNS server 102 a may call the callback function, generate a message, or otherwise initiate a process by which the listener 112 may be notified.
- the notification 302 from DNS server 102 a may indicate that a change to domain data for the zone has occurred, but the notification may not include the DNS record or records that have been changed, or may not include data sufficient to determine the specific change that has been made.
- the notification may include an identifier of a DNS record that has been changed, or the notification may merely indicate that data associated with a particular zone has been changed.
- the notification may include a field or other indicator that specifies the change that has been made.
- the notification may specify that a particular DNS record or set of records has been added, deleted or changed.
- the listener 112 can process the notification 302 received at [A] and initiate a query for domain data associated with the zone.
- the listener 112 can determine that the notification 302 indicates domain data for the zone, to be managed by the domain management system 100 , has changed, and the listener 112 can instruct or otherwise cause the query manager 110 to obtain domain data for the zone, as described in greater detail above.
- the listener 112 can receive a notification 304 from a different DNS server—DNS server 102 b —regarding a change to domain data maintained by DNS server 102 b .
- the domain management system 100 may subscribe to notifications from DNS server 102 b , and the notifications may be received whenever domain data associated with a particular zone, or otherwise satisfying particular criteria, is changed. For example, as described above with respect to DNS server 102 a , the domain management system 100 may register with the DNS server 102 b to be notified whenever a change occurs to a DNS record associated with a particular zone.
- the notification 304 from DNS server 102 b may indicate that a change to domain data for the zone has occurred, and may include the changed DNS record(s) or data from which the changes can be derived.
- the notification 304 may include a complete DNS record, including a change that has been made.
- the change may be a new IP address, in the “data” field, when compared to a DNS record previously received from DNS server 102 b .
- the DNS record may be formatted according to a server-specific format of the DNS server 102 b .
- the notification may include a field or other indicator that specifies the change that has been made.
- the notification may specify that the DNS record included in the notification is a new record that has been added to the DNS server 102 b or a record that has been deleted or otherwise deactivated from the DNS server 102 b .
- the notification may specify the particular field or set of fields whose data values have changed (or been added to or removed from the DNS record).
- the listener 112 can provide the notification(s) received at [C] to the transformation processor 114 .
- the transformation processor 114 can apply a set of transformations to the DNS records so that they may be stored in a server-independent format.
- the listener 112 may provide the DNS records as-received from the DNS server 102 b .
- the listener 112 may augment the DNS records or perform some other preliminary processing before providing the DNS records to the transformation processor 114 .
- the listener 112 may provide an augmented data set 314 that includes DNS records received from DNS server 102 b , and also includes data indicating the source of the DNS records (DNS server 102 b in this example), the date and time that the records were received, etc.
- FIG. 4 is a flow diagram of an illustrative process 400 that may be executed by a domain management system 100 to transform domain data from a server-specific format associated with a particular DNS server into a server-independent format for storage.
- the domain management system 100 may then use the server-independent domain data for synchronization of domain data across one or more DNS servers by transforming the server-independent domain data into the server-specific format(s) of the target DNS server(s).
- the process 400 may be performed to synchronize domain data across multiple DNS servers—each using different and potentially incompatible formats and modification operations—automatically in response to determining that domain data at one DNS server has changed. Portions of the process 400 will be described with reference to the diagram of illustrative data flows and interactions shown in FIG. 5 .
- the process 400 shown in FIG. 4 begins at block 402 .
- the process 400 may begin in response to an event, such as when the domain management system 100 begins operation, is notified of a change to domain data at a DNS server, or in response to some other event.
- a set of executable program instructions stored on one or more non-transitory computer-readable media e.g., hard drive, flash memory, removable media, etc.
- memory e.g., random access memory or “RAM”
- the executable instructions may then be executed by a hardware-based computer processor (e.g., a central processing unit or “CPU”) of the computing device.
- a hardware-based computer processor e.g., a central processing unit or “CPU”
- the process 400 or portions thereof may be implemented on multiple processors, serially or in parallel.
- the transformation processor 114 may receive domain data that originated from a source DNS server.
- the domain data may have been obtained by the domain management system 100 as part of a proactive query (e.g., initiated by the query manager 110 to obtain domain data for analysis and/or backup), as part of an automatically-generated change notification (e.g., received by the listener 112 ), or in response to some other event.
- the query manager 110 or listener 112 may have modified the domain data in some manner prior to providing it to the transformation processor 114 .
- the domain data 500 may include an identifier of the source DNS server 102 , a time stamp indicating when the domain data was obtained, etc. Examples of obtaining domain data from a DNS server 102 in a server-specific format associated with the DNS server 102 are described in greater detail above.
- the transformation processor 114 may analyze the domain data 500 to determine the transformation(s) to apply to the domain data 500 in order to generate server-independent domain data.
- the transformation processor 114 may determine the DNS server from which the domain data 500 was received, or otherwise determine the server-specific format of the domain data.
- the query manager 110 may have included a source identifier in the domain data 500 , specifying that the domain data 500 came from a particular DNS server, such as DNS server 102 a illustrated in FIG. 3 .
- the transformation process 114 may identify a set of one or more transformation rules 510 for transforming domain data 500 in a particular server-specific format into a server-independent format.
- the transformation rules 510 identified by the transformation processor 114 may be a subset of the transformation rules to which the transformation processor 114 has access to transform domain data in any number of server-specific formats into the server-independent format.
- the transformation processor 114 may generate a server-independent version 502 of the domain data 500 using the transformation rules 510 identified above.
- the transformations may include re-formatting the domain data, augmenting the domain data with additional data from another source, modifying the domain data, de-duplicating the domain data, other transformations, or some combination thereof.
- Several example transformations will be described herein for illustrative purposes only. The examples are not required in all embodiments, and are not meant to be exhaustive of all possible transformations specified by the transformation rules 510 or otherwise applied by the transformation processor 114 .
- the transformation processor 114 may augment domain data with additional data that is obtained from sources other than the source DNS server 102 a , or additional data that is generated by the transformation processor 114 .
- the source DNS server 102 a may not support a particular type of DNS record.
- the transformation processor 114 may generate a DNS record of the type not supported by the DNS server 102 .
- the source DNS server 102 a may not support PTR records for reverse-lookup of host names mapped to given IP addresses.
- the DNS server 102 a may use a transformation rule 510 to generate PTR records for the host names in the domain data 500 .
- the information required for the PTR records may come from other DNS records in the domain data (e.g., A DNS records), information in the DNS data store 120 , or the like.
- the transformation processor 114 may modify domain data obtained from a source DNS server to generate server-independent data.
- the transformation processor 114 may convert the DNS record into a different type of DNS record.
- the DNS server 102 a may not support a sender policy framework (“SPF”) DNS record used for mail authentication.
- SPF sender policy framework
- the information that would be in an SPF record may instead be in a TXT record.
- the transformation processor 114 may convert such a TXT record into an SPF record.
- the transformation processor 114 may modify the structure and/or formatting of the domain data 500 in general, or specific DNS records in particular, to generate server-independent domain data.
- the server-independent format may be based on a formatting framework such as JSON or XML.
- Particular DNS records, with particular DNS fields, may be represented using the constructs of the formatting framework.
- the transformation processor 114 can extract the DNS records or individual portions thereof from the domain data 500 , and generate domain data in the desired server-independent format.
- the domain data 500 received in a server-specific format is formatted using the same formatting framework as the server-independent format uses, there may be translation, re-structuring, and other modifications needed to produce the server-independent format.
- individual records may be structured differently, individual fields may have different names and/or attributes, etc.
- the transformation processor 114 may use the rules 510 to map and/or convert the domain data in the server-specific format to the domain data in the server-independent format.
- the transformation processor 114 may store the transformed, server-independent version 502 of the domain data to the DNS data store 120 , as shown in FIG. 5 . Storing the server-independent version 502 of the domain data allows the domain management system 100 to maintain a single copy of domain data for a domain, from which any number of server-specific versions may be created.
- the transformation processor 114 can de-duplicate the server-independent domain data maintained for a given domain.
- the transformation processor 114 may obtain domain data originating from a particular DNS server that includes a particular DNS record, and can apply de-duplication to the data.
- the transformation processor 114 may obtain, from DNS server 102 a , an A record for a specific host name.
- the DNS data store 120 may include a previously-stored A record for the same host name. The previously-stored record may have been obtained from the same DNS server 102 a , or from a different DNS server 102 b .
- the currently-processed record may replace the previously-stored record rather than being stored as a duplicate.
- timestamp data may be associated with the previously-stored record, and the currently-processed record may only replace the previously-stored record if timestamp data for the currently-processed record indicates the currently-processed record is more recent than the previously-stored record.
- the transformation processor 114 may receive multiple sets of domain data to process within a given period of time. Individual sets may be received from different DNS servers, from the same DNS server, or some combination thereof. The transformation processor 114 may process the sets of domain data (e.g., execute the operations described with respect to blocks 406 - 410 ) according to a particular order to ensure that a proper sequence of changes is applied. For example, the sets of domain data may be processed in order according to the timestamps that are applied by the query manager 110 or listener 112 .
- the domain management system 100 can determine whether to synchronize domain data for a domain across multiple DNS servers or to otherwise send domain data to one or more DNS servers. The determination may be made based on a change to domain data being saved to the DNS data store 120 .
- a secondary DNS server 102 b may be used to provide redundancy to a primary DNS server 102 a . If domain data has changed at the primary DNS server 102 a , the changes may be synchronized to the secondary DNS server 102 b .
- an administrator of the domain may wish to migrate domain data from one DNS server 102 a to another DNS server 102 b.
- the process 400 may proceed to block 414 . Otherwise, the process 400 may terminate at block 422 .
- the transformation processor 114 can determine the transformation(s) to apply to the server-independent domain data 502 stored in the domain data store in order to generate domain data in a server-specific format for sending to a DNS server identified above, such as DNS server 102 b .
- the transformation process 114 may identify a set of one or more transformation rules 512 for transforming server-independent domain data 502 into server-specific domain data 506 formatted in a server-specific format.
- the transformation rules 512 identified by the transformation processor 114 may be a subset of the transformation rules to which the transformation processor 114 has access to transform server-independent format domain data into domain data in any number of server-specific formats.
- the transformation processor 114 can generate a server-specific version of the domain data 504 using the transformation rules 512 identified above.
- the transformations may include re-formatting the domain data, augmenting the domain data with additional data from another source, modifying the domain data, excluding certain domain data, other transformations, or some combination thereof.
- some transformations may be an inverse of transformations described above for generating server-independent domain data from server-specific domain data.
- the domain synchronizer 116 can update the domain data stored at a destination DNS server, such as secondary DNS server 102 b , using the server-specific domain data 506 generated by the transformation processor 114 .
- the domain synchronizer 116 may provide an upload of the server-specific domain data 506 to be integrated with or replace the domain data currently managed by the secondary DNS server 102 b , if any.
- the domain synchronizer 116 may make API calls or perform other programmatic operations to update the domain data stored at the secondary DNS server 102 b , instead of providing an upload of the serve-specific domain data 506 .
- the domain synchronizer 116 may establish a connection with the secondary DNS server 102 b , provide authentication credentials, obtain authorization to modify domain data, and make one or more API calls to update domain data managed by the secondary DNS server 102 b.
- the domain management system 100 may determine whether there are additional DNS servers to be synchronized or otherwise updated. If so, the process 400 can return to block 414 for each DNS server. In some embodiments, the synchronization of multiple DNS servers may occur in parallel or asynchronously, rather than serially as shown. If there are no DNS servers remaining to be updated, the process 400 may end at block 422 .
- FIG. 6 shows components of an illustrative computing system 600 that may be used to implement some or all of the features of the domain management system 100 described above.
- the computing system 600 may include: one or more computer processors 602 , such as physical central processing units (“CPUs”); one or more network interfaces 604 , such as a network interface cards (“NICs”); one or more computer readable medium drives 606 , such as a high density disk (“HDDs”), solid state drives (“SDDs”), flash drives, and/or other persistent non-transitory computer-readable media; and one or more computer readable memories 608 , such as random access memory (“RAM”) and/or other volatile non-transitory computer-readable media.
- processors 602 such as physical central processing units (“CPUs”
- network interfaces 604 such as a network interface cards (“NICs”
- NICs network interface cards
- computer readable medium drives 606 such as a high density disk (“HDDs”), solid state drives (“SDDs”), flash drives, and
- the computer readable memory 608 may include computer program instructions that the computer processor 602 executes in order to implement one or more embodiments.
- the computer readable memory 608 can store an operating system 610 that provides computer program instructions for use by the computer processor 602 in the general administration and operation of the computing system 600 .
- the computer readable memory 608 may also include query manager instructions 612 for implementing the query manager 110 .
- the computer readable memory 608 may also include listener instructions 614 for implementing the listener 112 .
- the computer readable memory 608 may also include transformation processor instructions 616 for implementing the transformation processor 114 .
- the computer readable memory 608 may also include domain synchronizer instructions 618 for implementing the domain synchronizer 116 .
- processor device can be a microprocessor, but in the alternative, the processor device can be a controller, microcontroller, or state machine, combinations of the same, or the like.
- a processor device can include electrical circuitry configured to process computer-executable instructions.
- a processor device includes an FPGA or other programmable device that performs logic operations without processing computer-executable instructions.
- a processor device can also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
- a processor device may also include primarily analog components. For example, some or all of the algorithms described herein may be implemented in analog circuitry or mixed analog and digital circuitry.
- a computing environment can include any type of computer system, including, but not limited to, a computer system based on a microprocessor, a mainframe computer, a digital signal processor, a portable computing device, a device controller, or a computational engine within an appliance, to name a few.
- a software module can reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of a non-transitory computer-readable storage medium.
- An exemplary storage medium can be coupled to the processor device such that the processor device can read information from, and write information to, the storage medium.
- the storage medium can be integral to the processor device.
- the processor device and the storage medium can reside in an ASIC.
- the ASIC can reside in a user terminal.
- the processor device and the storage medium can reside as discrete components in a user terminal.
- Disjunctive language such as the phrase “at least one of X, Y, Z,” unless specifically stated otherwise, is otherwise understood with the context as used in general to present that an item, term, etc., may be either X, Y, or Z, or any combination thereof (e.g., X, Y, and/or Z). Thus, such disjunctive language is not generally intended to, and should not, imply that certain embodiments require at least one of X, at least one of Y, or at least one of Z to each be present.
- a device configured to are intended to include one or more recited devices. Such one or more recited devices can also be collectively configured to carry out the stated recitations.
- a processor configured to carry out recitations A, B and C can include a first processor configured to carry out recitation A working in conjunction with a second processor configured to carry out recitations B and C.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
A domain management system that manages domain names, network addresses, and other aspects of a computing network domain is provided. The domain management system obtains domain data, such as domain name system (“DNS”) records, from any number of network-accessible providers of the domain data, such as DNS servers. The domain management system can store, transform, and synchronize the domain data among the network-accessible providers, even if the network-accessible providers do not all use or recognize the same format and/or content of domain data.
Description
- The present application is a continuation of U.S. patent application Ser. No. 17/576,749, filed Jan. 14, 2022, which is a continuation of U.S. patent application Ser. No. 16/926,253, filed Jul. 10, 2020, which is a continuation of U.S. patent application Ser. No. 16/710,537, filed on Dec. 11, 2019, the contents of each of which are incorporated by reference herein.
- Electronic devices may be used to exchange information over communication networks, such as the internet. For example, computing devices may use network addresses, such as internet protocol (“IP”) addresses, to send communications to each other. When one computing device sends a communication to another computing device, the sending device addresses the communication to the network address of the receiving device. The communication is then sent via a communication network to the receiving device. Intermediary components of the communication network infrastructure (e.g., routers, switches, and the like) use the network address of the receiving device to route the communication to the receiving device.
- In some cases, one computing device may be instructed to communicate with another computing device without first being provided the network address of the receiving device. For example, a sending device may be provided with a name of the receiving device, such as a domain name. In such cases, the sending device may determine the network address of the receiving device by requesting the network address from a domain name system (“DNS”) name server. The DNS name server may respond to the request by providing the network address that is associated with the domain name. The sending device may then send the communication to the receiving device using the network address obtained from the DNS name server.
- Throughout the drawings, reference numbers may be re-used to indicate correspondence between referenced elements. The drawings are provided to illustrate example embodiments described herein and are not intended to limit the scope of the disclosure.
-
FIG. 1 is a block diagram of an illustrative network environment including a domain management system and various DNS servers according to some embodiments. -
FIG. 2 is a block diagram of various data flows and interactions between the domain management system and various DNS servers to obtain domain data according to some embodiments. -
FIG. 3 is a block diagram of various data flows and interactions between the domain management system and various DNS servers to determine that domain data has changed according to some embodiments. -
FIG. 4 is a flow diagram of an illustrative process for managing domain data according to some embodiments. -
FIG. 5 is a block diagram of various data flows and interactions between the domain management system and various DNS servers to synchronize domain data according to some embodiments. -
FIG. 6 is a block diagram of a computing system that may be used to implement the domain management system or portions thereof according to some embodiments. - The present disclosure is directed to a domain management system that manages domain names, network addresses, and other aspects of a computing network domain. The domain management system obtains domain data, such as domain name system (“DNS”) records, from any number of network-accessible providers of the domain data, such as DNS name servers. The domain management system can store, transform, and synchronize the domain data among the network-accessible providers, even if the network-accessible providers do not all use or recognize the same format and/or content of domain data.
- A computing network domain—also referred to herein as a “domain” for convenience—may be associated with any number of sub-domains (e.g., sub-domain-1.example.com, sub-domain-2.example.com, etc.), any of which may be associated with its own sub-domains, and any or all of which may be associated with different network addresses. In addition, a domain may provide different computing services, including content hosting, email, file access via different protocols, and the like. Any or all of these services may be associated with a different network address and/or a different type of DNS record. Thus, a single domain may encompass dozens, hundreds, or more individual network addresses and/or DNS records.
- Domains use the services of network-accessible DNS name servers—also referred to simply as DNS servers for convenience—to manage domain data for the domains. For example, a particular domain such as “example.com” may have a particular DNS server designated as the authoritative DNS server for network address data for the domain. User-friendly names and descriptors, such as those in a uniform resource locator (“URL”) or other uniform resource identifier (“URI”), may then be used in lieu of specific network addresses, such as internet protocol (“IP”) addresses, to access individual resources of the domain. A URL for the “index.html” resource of the “example.com” domain may include the domain name concatenated with the name of the resource: “example.com/index.html.” To resolve the domain name into a network address of the system from which the resource can be accessed, a requesting computing device may be directed to contact the authoritative DNS server for the domain, directly or indirectly (e.g., through a series of recursive DNS lookup operations to various DNS servers such as a root name server, top-level-domain name server, etc.). The computing device may submit a query for the network address assigned to the domain. The authoritative DNS server responds to the query by providing a network address (e.g., IP address) to which the domain has been assigned. The requesting device may then access the resource using the resolved network address. Without being able to resolve domain names into network addresses from which resources can be accessed, consumers of services provided by the domain may not be able to access the services.
- One technique for a DNS server to maximize uptime and meet service level agreements of the domains that it services is to implement redundancy within the DNS server. However, a single DNS server exclusively managing all domain data for a particular domain still represents a single point of failure from the perspective of entities external to the DNS server. Thus, it is desirable to use multiple independent DNS servers to manage domain data for a domain. This is advisable even though only one of the DNS servers is designated as authoritative for a particular domain, because the additional DNS servers can provide an additional layer of redundancy. However, different DNS servers may support different DNS record types, use different formats for storing DNS records, and may implement other DNS features differently. Moreover, different DNS servers are not configured to synchronize domain data with other DNS servers. Thus, the task of maintaining domain data across multiple DNS servers is unnecessarily inefficient and/or impractical.
- Some aspects of the present disclosure relate to addressing the issues described above, among others, by converting domain data between different formats for different DNS servers. A domain management system can obtain domain data from a particular DNS server in a format that is specific to that DNS server. The domain management system can apply one or more transformations to the domain data to generate DNS server-independent domain data. Illustratively, the transformations may include re-formatting the data, augmenting the domain data with additional data from another source, de-duplicating or otherwise removing data, generating additional and/or alternative DNS record types, and the like. The domain management system can then update any number of other DNS servers with the data so that multiple DNS servers are synchronized with up-to-date domain data. In order to update other DNS servers, the domain management system may transform the DNS server-independent data into a format that is specific to each DNS server that is to be updated. The transformations may include re-formatting the data, augmenting the domain data with additional data from another source, de-duplicating or otherwise removing data, generating additional and/or alternative DNS record types, and the like. In this way, the domain management system can manage the domain data stored among multiple independent DNS servers regardless of whether the DNS servers use or recognize the same format and/or content of domain data.
- Additional aspects of the present disclosure relate to monitoring DNS servers for changes to domain data, and synchronizing the changes among other DNS servers. The domain management system can subscribe to notifications regarding changes in domain data at individual DNS servers, poll the DNS servers to determine whether domain data has been changed, or obtain information about changes to domain data in some other manner. When a change to domain data is detected, the domain management system can obtain a snapshot of all domain data at the DNS server, or some subset thereof such as the DNS records that have been changed. The domain management system may apply one or more sets of transformations to the domain data to generate DNS server-independent data and/or domain data that can be sent to other DNS servers to ensure data parity between all of the DNS servers—or some subset thereof—managing domain data for the domain. In this way, the domain management system can automatically synchronize domain data among multiple independent DNS servers in response to domain data changing at one of the DNS servers.
- Various aspects of the disclosure will now be described with regard to certain examples and embodiments, which are intended to illustrate but not limit the disclosure. Although aspects of some embodiments described in the disclosure will focus, for the purpose of illustration, on particular examples of domain data records, transformations, and the like, the examples are illustrative only and are not intended to be limiting. In some embodiments, the techniques described herein may be applied to additional or alternative domain data records, transformations, etc.
- With reference to an illustrative embodiment,
FIG. 1 shows a network environment in which aspects of the present disclosure may be implemented. As shown, the network environment may include adomain management system 100 and 102 a, 102 b, . . . 102 n. Thevarious DNS servers 102 a, 102 b, . . . 102 n may be referred to collectively as DNS servers 102 for convenience.DNS servers - The
domain management system 100 and the various DNS servers 102 may communicate with each other via one ormore communication networks 104. Illustratively, acommunication network 104 may be a publicly-accessible network of linked networks, possibly operated by various distinct parties, such as the Internet. In some cases, thenetwork 104 may include a private network, personal area network, local area network, wide area network, cable network, satellite network, cellular data network, etc., or a combination thereof, some or all of which may or may not have access to and/or from the Internet. - The
domain management system 100 may include various components for providing the features described herein. Illustratively, thedomain management system 100 may include aquery manager 110 for retrieving domain data from DNS servers 102. Thedomain management system 100 may also include alistener 112 to monitor DNS servers 102 for changes to domain data stored at the DNS servers 102. Thedomain management system 100 may also include atransformation processor 114 for determining and applying sets of transformations to server-specific domain data to generate server-independent domain data, and vice versa. Thedomain management system 100 may also include adomain synchronizer 116 for determining the domain data to be sent to one or more DNS servers 102 to ensure that that the domain data maintained by all DNS servers 102 for the domain remains synchronized. Thedomain management system 100 may also include various data stores for storing data and otherwise supporting the operation of components of thedomain management system 100. For example, thedomain management system 100 may include aDNS data store 120 to store server-independent domain data, information about server-specific domain data formats and requirements, and the like. The example components and data stores of thedomain management system 100 shown inFIG. 1 are illustrative only, and are not intended to be limiting. In some embodiments, adomain management system 100 may have fewer, additional, and/or alternative components and data stores. - The
domain management system 100 may be implemented on one or more physical server computing devices. In some embodiments, the domain management system 100 (or individual components thereof, such as thequery manager 110,listener 112,transformation processor 114,domain synchronizer 116, etc.) may be implemented on one or more host devices, such as blade servers, midrange computing devices, mainframe computers, desktop computers, or any other computing device configured to provide computing services and resources. For example, a single host device may execute one ormore query managers 110,listeners 112,transformation processors 114,domain synchronizers 116, some combination thereof, etc. Thedomain management system 100 may include any number of such hosts. - In some embodiments, the features and services provided by the
domain management system 100 may be implemented as web services consumable via one or more communication networks. In further embodiments, the domain management system 100 (or individual components thereof) is provided by one more virtual machines implemented in a hosted computing environment. The hosted computing environment may include one or more rapidly provisioned and released computing resources, such as computing devices, networking devices, and/or storage devices. A hosted computing environment may also be referred to as a “cloud” computing environment. - The DNS servers 102 may maintain domain data for any number of domains, respond to DNS queries to resolve domain and subdomain names into network address, and the like. Illustratively, the domain data may be maintained as a set of DNS records for each domain, subdomain, etc. associated with a given DNS server 102. In some embodiments, DNS servers 102 may be implemented on one or more host devices, such as blade servers, midrange computing devices, mainframe computers, desktop computers, or any other computing device configured to provide computing services and resources. In some embodiments, the features and services provided by one or more of the DNS servers 102 may be implemented as web services consumable via one or more communication networks, and/or provided by a cloud computing environment.
-
FIG. 2 shows example data flows and interactions between thedomain management system 100 and 102 a and 102 b during acquisition of domain data. Thevarious DNS servers domain management system 100 may acquire domain data from a DNS server in order to keep a backup of the domain data, migrate the domain data to a different DNS server, synchronize changes detected by the listener 112 (as described in greater detail below), or in response to some other event or command. - At [A], the
query manager 110 can request domain data fromDNS server 102 a. Thequery manager 110 may request domain data associated with a particular portion of the total DNS name space. The particular portion of the total DNS namespace may also be referred to as a zone. For example, thedomain management system 100 may manage the domain data for the zone “example.com,” and thequery manager 110 may request domain data for the “example.com” zone fromDNS server 102 a. Thequery manager 110 may request all of the relevant domain data, or some subset thereof. Illustratively, the request may include one or more parameters. The parameters may include: a name, descriptor, or identifier for the requested zone; selection or filtering criteria (e.g., dates or date ranges for created, updated, or deprecated DNS records); security credentials (e.g., account identifier, security token, etc.); other data; or some combination thereof. - The request may in some cases be an application programming interface (“API”) request to the
DNS server 102 a. For example, the request may be a REpresentational State Transfer (“REST”) call. In some embodiments, the request may be a request for a user interface, such as a markup language-based interface (e.g., a hypertext markup language or “HTML” interface). Thequery manager 110 may then parse the markup language-based response to obtain the desired data (e.g., perform a “scraping” procedure whereby the markup language is parsed to identify fields, and data within the fields, that is relevant to the DNS records). - At [B], the
query manager 110 may receive aresponse 202 to the request sent at [A]. Theresponse 202 may include a listing of all domain data thatDNS server 102 a has for the zone that served as the basis for the request, or a subset thereof that satisfies the parameters of the request. The domain data may be in the form of one or more DNS records that are responsive to the query. The DNS records may be provided in a data structure that is formatted according to a particular framework, such as JavaScript Object Notation (“JSON”), eXtensible Markup Language (“XML”), comma separated values (“CSV”), or some other structured data format. In some cases, the DNS records may be provided according to a format that is unique toDNS server 102 a, or using a particular structure that is unique toDNS server 102 a even if the formatting of the records conforms to a standard such as JSON or XML. - The DNS records may each include any number of individual data fields. For example, a DNS “A” record is used to map a network resource such as a domain name or subdomain name (also referred to as a “host” name) to an IP address for a period of time (also referred to as “time to live” or “TTL”). Thus, an A record will typically have a data field for the host name, a data field for the IP address, and a data field for the TTL. As another example, a DNS “CNAME” record maps one host name known as an alias, to another host name known as a canonical name, for a period of time. Thus, a CNAME record will typically have a data field for the alias name, a data field for the canonical name, and a data field for the TTL. Other types of DNS records include PTR records for reverse-lookup of host names mapped to given IP addresses, MX records for mail routing, and TXT records for storing text-based information. The example DNS records described in the present disclosure are illustrative only, and are not intended to be limiting.
- In the example illustrated in
FIG. 2 , theresponse 202 from theDNS server 102 a provides two A records using a first server-specific format. As shown, the records are separated by hyphens, and individual data fields are separated onto different lines prefixed with the name of the data field. - At [C], the
query manager 110 may provide the DNS records received at [B] to thetransformation processor 114. As described in greater detail below, thetransformation processor 114 can apply a set of transformations to the DNS records so that they may be stored in a server-independent format. Thequery manager 110 may provide the DNS records as-received from theDNS server 102 a. In some embodiments, thequery manager 110 may augment the DNS records or perform some other preliminary processing before providing the DNS records to thetransformation processor 114. For example, thequery manager 110 may provide anaugmented data set 212 that includes the DNS records received fromDNS server 102 a, and also includes data indicating the source of the DNS records (DNS server 102 a in this example), the date and time that the records were received, etc. - At [D], the
query manager 110 may request domain data from a different DNS server:DNS server 102 b. For example,DNS server 102 b may provide redundancy toserver 102 a. In this implementation,DNS server 102 a may be the authoritative server, andDNS server 102 b may serve as a backup for situations when DNS server 102A is offline or otherwise unable to respond to DNS queries. Thequery manager 110 may request domain data associated with the same zone as requested from theDNS server 102 a. The request may be made to compare the data with the data received fromDNS server 102 a, compare differences, synchronize data among the DNS servers, perform a backup of all domain data, or for some other reason. - At [E], the
query manager 110 may receive aresponse 204 fromDNS server 102 b to the request sent at [D]. Theresponse 204 may include a listing of all domain data that theDNS server 102 b has for the zone that served as the basis for the request, or a subset thereof that satisfies the parameters of the request. The domain data may be in the form of one or more DNS records that are responsive to the query. As described above, different DNS servers may provide DNS records in different formats or structures. - In the example illustrated in
FIG. 2 ,DNS server 102 b has provided two A records using a second server-specific format that is different than the first server-specific format by whichDNS server 102 a provided the same two A records. As shown, the records are provided with each record being on its own line, and the individual data fields delimited by whitespace such as a tab or space. In this format, the order of the data fields within each record would need to be known to the receiver in order to parse the records. - At [F], the
query manager 110 may provide the DNS records received at [E] to thetransformation processor 114. As described in greater detail below, thetransformation processor 114 can apply a set of transformations to the DNS records so that they may be stored in a server-independent format. Thequery manager 110 may provide the DNS records as-received from theDNS server 102 b. In some embodiments, thequery manager 110 may augment the DNS records or perform some other preliminary processing before providing the DNS records to thetransformation processor 114. For example, thequery manager 110 may provide anaugmented data set 214 that includes DNS records received fromDNS server 102 b, and also includes data indicating the source of the DNS records (DNS server 102 b in this example), the date and time that the records were received, etc. -
FIG. 3 shows example data flows and interactions between thedomain management system 100 and 102 a and 102 b during monitoring of the domain data maintained by thevarious DNS servers 102 a, 102 b. TheDNS servers domain management system 100 may monitor the domain data maintained by the 102 a, 102 b—actively or passively—to determine when a change has occurred to the domain data. Advantageously, theDNS servers domain management system 100 can automatically initiate an update process to synchronize domain data across DNS servers once a change has been detected. - At [A], the
listener 112 can receive anotification 302 fromDNS server 102 a regarding a change to domain data maintained by theDNS server 102 a. Thedomain management system 100 may subscribe to notifications fromDNS server 102 a, and the subscribed notifications may be received whenever domain data associated with a particular zone, or otherwise satisfying particular criteria, is changed. For example, thedomain management system 100 may register withDNS server 102 a to be notified whenever a change occurs to a DNS record associated with a particular zone. Thelistener 112 may be configured to provide a callback function, monitor a message queue, or implement some other process for determining when domain data for a zone has been changed. When such a change occurs,DNS server 102 a may call the callback function, generate a message, or otherwise initiate a process by which thelistener 112 may be notified. - The
notification 302 fromDNS server 102 a may indicate that a change to domain data for the zone has occurred, but the notification may not include the DNS record or records that have been changed, or may not include data sufficient to determine the specific change that has been made. For example, the notification may include an identifier of a DNS record that has been changed, or the notification may merely indicate that data associated with a particular zone has been changed. In some embodiments, the notification may include a field or other indicator that specifies the change that has been made. For example, the notification may specify that a particular DNS record or set of records has been added, deleted or changed. - At [B], the
listener 112 can process thenotification 302 received at [A] and initiate a query for domain data associated with the zone. Thelistener 112 can determine that thenotification 302 indicates domain data for the zone, to be managed by thedomain management system 100, has changed, and thelistener 112 can instruct or otherwise cause thequery manager 110 to obtain domain data for the zone, as described in greater detail above. - At [C], the
listener 112 can receive anotification 304 from a different DNS server—DNS server 102 b—regarding a change to domain data maintained byDNS server 102 b. Thedomain management system 100 may subscribe to notifications fromDNS server 102 b, and the notifications may be received whenever domain data associated with a particular zone, or otherwise satisfying particular criteria, is changed. For example, as described above with respect toDNS server 102 a, thedomain management system 100 may register with theDNS server 102 b to be notified whenever a change occurs to a DNS record associated with a particular zone. - The
notification 304 fromDNS server 102 b may indicate that a change to domain data for the zone has occurred, and may include the changed DNS record(s) or data from which the changes can be derived. For example, as shown, thenotification 304 may include a complete DNS record, including a change that has been made. In this example, the change may be a new IP address, in the “data” field, when compared to a DNS record previously received fromDNS server 102 b. The DNS record may be formatted according to a server-specific format of theDNS server 102 b. In some embodiments, the notification may include a field or other indicator that specifies the change that has been made. For example, the notification may specify that the DNS record included in the notification is a new record that has been added to theDNS server 102 b or a record that has been deleted or otherwise deactivated from theDNS server 102 b. As another example the notification may specify the particular field or set of fields whose data values have changed (or been added to or removed from the DNS record). - At [D], the
listener 112 can provide the notification(s) received at [C] to thetransformation processor 114. As described in greater detail below, thetransformation processor 114 can apply a set of transformations to the DNS records so that they may be stored in a server-independent format. Thelistener 112 may provide the DNS records as-received from theDNS server 102 b. In some embodiments, thelistener 112 may augment the DNS records or perform some other preliminary processing before providing the DNS records to thetransformation processor 114. For example, thelistener 112 may provide anaugmented data set 314 that includes DNS records received fromDNS server 102 b, and also includes data indicating the source of the DNS records (DNS server 102 b in this example), the date and time that the records were received, etc. -
FIG. 4 is a flow diagram of anillustrative process 400 that may be executed by adomain management system 100 to transform domain data from a server-specific format associated with a particular DNS server into a server-independent format for storage. Thedomain management system 100 may then use the server-independent domain data for synchronization of domain data across one or more DNS servers by transforming the server-independent domain data into the server-specific format(s) of the target DNS server(s). Advantageously, theprocess 400 may be performed to synchronize domain data across multiple DNS servers—each using different and potentially incompatible formats and modification operations—automatically in response to determining that domain data at one DNS server has changed. Portions of theprocess 400 will be described with reference to the diagram of illustrative data flows and interactions shown inFIG. 5 . - The
process 400 shown inFIG. 4 begins atblock 402. Theprocess 400 may begin in response to an event, such as when thedomain management system 100 begins operation, is notified of a change to domain data at a DNS server, or in response to some other event. When theprocess 400 is initiated, a set of executable program instructions stored on one or more non-transitory computer-readable media (e.g., hard drive, flash memory, removable media, etc.) may be loaded into memory (e.g., random access memory or “RAM”) of a computing device of thedomain management system 100. The executable instructions may then be executed by a hardware-based computer processor (e.g., a central processing unit or “CPU”) of the computing device. In some embodiments, theprocess 400 or portions thereof may be implemented on multiple processors, serially or in parallel. - At
block 404, thetransformation processor 114 may receive domain data that originated from a source DNS server. The domain data may have been obtained by thedomain management system 100 as part of a proactive query (e.g., initiated by thequery manager 110 to obtain domain data for analysis and/or backup), as part of an automatically-generated change notification (e.g., received by the listener 112), or in response to some other event. In some embodiments, thequery manager 110 orlistener 112 may have modified the domain data in some manner prior to providing it to thetransformation processor 114. For example, thedomain data 500 may include an identifier of the source DNS server 102, a time stamp indicating when the domain data was obtained, etc. Examples of obtaining domain data from a DNS server 102 in a server-specific format associated with the DNS server 102 are described in greater detail above. - At
block 406, thetransformation processor 114 may analyze thedomain data 500 to determine the transformation(s) to apply to thedomain data 500 in order to generate server-independent domain data. Thetransformation processor 114 may determine the DNS server from which thedomain data 500 was received, or otherwise determine the server-specific format of the domain data. For example, thequery manager 110 may have included a source identifier in thedomain data 500, specifying that thedomain data 500 came from a particular DNS server, such asDNS server 102 a illustrated inFIG. 3 . Thetransformation process 114 may identify a set of one ormore transformation rules 510 for transformingdomain data 500 in a particular server-specific format into a server-independent format. The transformation rules 510 identified by thetransformation processor 114 may be a subset of the transformation rules to which thetransformation processor 114 has access to transform domain data in any number of server-specific formats into the server-independent format. - At
block 408, thetransformation processor 114 may generate a server-independent version 502 of thedomain data 500 using the transformation rules 510 identified above. The transformations may include re-formatting the domain data, augmenting the domain data with additional data from another source, modifying the domain data, de-duplicating the domain data, other transformations, or some combination thereof. Several example transformations will be described herein for illustrative purposes only. The examples are not required in all embodiments, and are not meant to be exhaustive of all possible transformations specified by the transformation rules 510 or otherwise applied by thetransformation processor 114. - As a first example, the
transformation processor 114 may augment domain data with additional data that is obtained from sources other than thesource DNS server 102 a, or additional data that is generated by thetransformation processor 114. In some embodiments, thesource DNS server 102 a may not support a particular type of DNS record. When thetransformation processor 114 generates a server-independent version of the domain data, thetransformation processor 114 may generate a DNS record of the type not supported by the DNS server 102. For example, thesource DNS server 102 a may not support PTR records for reverse-lookup of host names mapped to given IP addresses. TheDNS server 102 a may use atransformation rule 510 to generate PTR records for the host names in thedomain data 500. The information required for the PTR records may come from other DNS records in the domain data (e.g., A DNS records), information in theDNS data store 120, or the like. - As a second example, the
transformation processor 114 may modify domain data obtained from a source DNS server to generate server-independent data. In some embodiments, when thetransformation processor 114 processes a particular type of DNS record, thetransformation processor 114 may convert the DNS record into a different type of DNS record. For example, theDNS server 102 a may not support a sender policy framework (“SPF”) DNS record used for mail authentication. The information that would be in an SPF record may instead be in a TXT record. Thetransformation processor 114 may convert such a TXT record into an SPF record. - As a third example, the
transformation processor 114 may modify the structure and/or formatting of thedomain data 500 in general, or specific DNS records in particular, to generate server-independent domain data. In some embodiments, the server-independent format may be based on a formatting framework such as JSON or XML. Particular DNS records, with particular DNS fields, may be represented using the constructs of the formatting framework. Thetransformation processor 114 can extract the DNS records or individual portions thereof from thedomain data 500, and generate domain data in the desired server-independent format. In some cases, even if thedomain data 500 received in a server-specific format is formatted using the same formatting framework as the server-independent format uses, there may be translation, re-structuring, and other modifications needed to produce the server-independent format. For example, individual records may be structured differently, individual fields may have different names and/or attributes, etc. Thetransformation processor 114 may use therules 510 to map and/or convert the domain data in the server-specific format to the domain data in the server-independent format. - At
block 410, thetransformation processor 114 may store the transformed, server-independent version 502 of the domain data to theDNS data store 120, as shown inFIG. 5 . Storing the server-independent version 502 of the domain data allows thedomain management system 100 to maintain a single copy of domain data for a domain, from which any number of server-specific versions may be created. - In some embodiments, the
transformation processor 114,DNS data store 120, or some other component of thedomain management system 100 can de-duplicate the server-independent domain data maintained for a given domain. Thetransformation processor 114 may obtain domain data originating from a particular DNS server that includes a particular DNS record, and can apply de-duplication to the data. For example, thetransformation processor 114 may obtain, fromDNS server 102 a, an A record for a specific host name. TheDNS data store 120 may include a previously-stored A record for the same host name. The previously-stored record may have been obtained from thesame DNS server 102 a, or from adifferent DNS server 102 b. The currently-processed record may replace the previously-stored record rather than being stored as a duplicate. In some cases, timestamp data may be associated with the previously-stored record, and the currently-processed record may only replace the previously-stored record if timestamp data for the currently-processed record indicates the currently-processed record is more recent than the previously-stored record. - In some embodiments, the
transformation processor 114 may receive multiple sets of domain data to process within a given period of time. Individual sets may be received from different DNS servers, from the same DNS server, or some combination thereof. Thetransformation processor 114 may process the sets of domain data (e.g., execute the operations described with respect to blocks 406-410) according to a particular order to ensure that a proper sequence of changes is applied. For example, the sets of domain data may be processed in order according to the timestamps that are applied by thequery manager 110 orlistener 112. - At
decision block 412, thedomain management system 100 can determine whether to synchronize domain data for a domain across multiple DNS servers or to otherwise send domain data to one or more DNS servers. The determination may be made based on a change to domain data being saved to theDNS data store 120. For example, asecondary DNS server 102 b may be used to provide redundancy to aprimary DNS server 102 a. If domain data has changed at theprimary DNS server 102 a, the changes may be synchronized to thesecondary DNS server 102 b. As another example, an administrator of the domain may wish to migrate domain data from oneDNS server 102 a to anotherDNS server 102 b. - If the
domain management system 100 is to synchronize domain data, theprocess 400 may proceed to block 414. Otherwise, theprocess 400 may terminate atblock 422. - At
block 414, thetransformation processor 114 can determine the transformation(s) to apply to the server-independent domain data 502 stored in the domain data store in order to generate domain data in a server-specific format for sending to a DNS server identified above, such asDNS server 102 b. Thetransformation process 114 may identify a set of one ormore transformation rules 512 for transforming server-independent domain data 502 into server-specific domain data 506 formatted in a server-specific format. The transformation rules 512 identified by thetransformation processor 114 may be a subset of the transformation rules to which thetransformation processor 114 has access to transform server-independent format domain data into domain data in any number of server-specific formats. - At
block 416, thetransformation processor 114 can generate a server-specific version of thedomain data 504 using the transformation rules 512 identified above. The transformations may include re-formatting the domain data, augmenting the domain data with additional data from another source, modifying the domain data, excluding certain domain data, other transformations, or some combination thereof. For example, some transformations may be an inverse of transformations described above for generating server-independent domain data from server-specific domain data. - At
block 418, thedomain synchronizer 116 can update the domain data stored at a destination DNS server, such assecondary DNS server 102 b, using the server-specific domain data 506 generated by thetransformation processor 114. Thedomain synchronizer 116 may provide an upload of the server-specific domain data 506 to be integrated with or replace the domain data currently managed by thesecondary DNS server 102 b, if any. In some embodiments, thedomain synchronizer 116 may make API calls or perform other programmatic operations to update the domain data stored at thesecondary DNS server 102 b, instead of providing an upload of the serve-specific domain data 506. For example, thedomain synchronizer 116 may establish a connection with thesecondary DNS server 102 b, provide authentication credentials, obtain authorization to modify domain data, and make one or more API calls to update domain data managed by thesecondary DNS server 102 b. - At
decision block 420, thedomain management system 100 may determine whether there are additional DNS servers to be synchronized or otherwise updated. If so, theprocess 400 can return to block 414 for each DNS server. In some embodiments, the synchronization of multiple DNS servers may occur in parallel or asynchronously, rather than serially as shown. If there are no DNS servers remaining to be updated, theprocess 400 may end atblock 422. -
FIG. 6 shows components of anillustrative computing system 600 that may be used to implement some or all of the features of thedomain management system 100 described above. In some embodiments, as shown, thecomputing system 600 may include: one ormore computer processors 602, such as physical central processing units (“CPUs”); one ormore network interfaces 604, such as a network interface cards (“NICs”); one or more computer readable medium drives 606, such as a high density disk (“HDDs”), solid state drives (“SDDs”), flash drives, and/or other persistent non-transitory computer-readable media; and one or more computerreadable memories 608, such as random access memory (“RAM”) and/or other volatile non-transitory computer-readable media. The computerreadable memory 608 may include computer program instructions that thecomputer processor 602 executes in order to implement one or more embodiments. For example, the computerreadable memory 608 can store anoperating system 610 that provides computer program instructions for use by thecomputer processor 602 in the general administration and operation of thecomputing system 600. The computerreadable memory 608 may also includequery manager instructions 612 for implementing thequery manager 110. The computerreadable memory 608 may also includelistener instructions 614 for implementing thelistener 112. The computerreadable memory 608 may also includetransformation processor instructions 616 for implementing thetransformation processor 114. The computerreadable memory 608 may also includedomain synchronizer instructions 618 for implementing thedomain synchronizer 116. - Depending on the embodiment, certain acts, events, or functions of any of the processes or algorithms described herein can be performed in a different sequence, can be added, merged, or left out altogether (e.g., not all described operations or events are necessary for the practice of the algorithm). Moreover, in certain embodiments, operations or events can be performed concurrently, e.g., through multi-threaded processing, interrupt processing, or multiple processors or processor cores or on other parallel architectures, rather than sequentially.
- The various illustrative logical blocks, modules, routines, and algorithm steps described in connection with the embodiments disclosed herein can be implemented as electronic hardware, or combinations of electronic hardware and computer software. To clearly illustrate this interchangeability, various illustrative components, blocks, modules, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware, or as software that runs on hardware, depends upon the particular application and design constraints imposed on the overall system. The described functionality can be implemented in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the disclosure.
- Moreover, the various illustrative logical blocks and modules described in connection with the embodiments disclosed herein can be implemented or performed by a machine, such as a processor device, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A processor device can be a microprocessor, but in the alternative, the processor device can be a controller, microcontroller, or state machine, combinations of the same, or the like. A processor device can include electrical circuitry configured to process computer-executable instructions. In another embodiment, a processor device includes an FPGA or other programmable device that performs logic operations without processing computer-executable instructions. A processor device can also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Although described herein primarily with respect to digital technology, a processor device may also include primarily analog components. For example, some or all of the algorithms described herein may be implemented in analog circuitry or mixed analog and digital circuitry. A computing environment can include any type of computer system, including, but not limited to, a computer system based on a microprocessor, a mainframe computer, a digital signal processor, a portable computing device, a device controller, or a computational engine within an appliance, to name a few.
- The elements of a method, process, routine, or algorithm described in connection with the embodiments disclosed herein can be embodied directly in hardware, in a software module executed by a processor device, or in a combination of the two. A software module can reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of a non-transitory computer-readable storage medium. An exemplary storage medium can be coupled to the processor device such that the processor device can read information from, and write information to, the storage medium. In the alternative, the storage medium can be integral to the processor device. The processor device and the storage medium can reside in an ASIC. The ASIC can reside in a user terminal. In the alternative, the processor device and the storage medium can reside as discrete components in a user terminal.
- Conditional language used herein, such as, among others, “can,” “could,” “might,” “may,” “e.g.,” and the like, unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain embodiments include, while other embodiments do not include, certain features, elements and/or steps. Thus, such conditional language is not generally intended to imply that features, elements and/or steps are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without other input or prompting, whether these features, elements and/or steps are included or are to be performed in any particular embodiment. The terms “comprising,” “including,” “having,” and the like are synonymous and are used inclusively, in an open-ended fashion, and do not exclude additional elements, features, acts, operations, and so forth. Also, the term “or” is used in its inclusive sense (and not in its exclusive sense) so that when used, for example, to connect a list of elements, the term “or” means one, some, or all of the elements in the list.
- Disjunctive language such as the phrase “at least one of X, Y, Z,” unless specifically stated otherwise, is otherwise understood with the context as used in general to present that an item, term, etc., may be either X, Y, or Z, or any combination thereof (e.g., X, Y, and/or Z). Thus, such disjunctive language is not generally intended to, and should not, imply that certain embodiments require at least one of X, at least one of Y, or at least one of Z to each be present.
- Unless otherwise explicitly stated, articles such as “a” or “an” should generally be interpreted to include one or more described items. Accordingly, phrases such as “a device configured to” are intended to include one or more recited devices. Such one or more recited devices can also be collectively configured to carry out the stated recitations. For example, “a processor configured to carry out recitations A, B and C” can include a first processor configured to carry out recitation A working in conjunction with a second processor configured to carry out recitations B and C.
- While the above detailed description has shown, described, and pointed out novel features as applied to various embodiments, it can be understood that various omissions, substitutions, and changes in the form and details of the devices or algorithms illustrated can be made without departing from the spirit of the disclosure. As can be recognized, certain embodiments described herein can be embodied within a form that does not provide all of the features and benefits set forth herein, as some features can be used or practiced separately from others. The scope of certain embodiments disclosed herein is indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.
Claims (20)
1. A system comprising executable instructions and one or more computer processors configured by the executable instructions to at least:
receive, from a first domain name system (“DNS”) server, a notification that a DNS record for a domain has changed, wherein the DNS record maps a resource associated with the domain to a network address of the resource;
retrieve, from the first DNS server, a first set of DNS records for the domain, wherein the first set of DNS records are retrieved in a first server-specific format associated with the first DNS server, and wherein the first set of DNS records comprises the DNS record that has been changed;
determine a first transformation set associated with the first DNS server, wherein the first transformation set comprises one or more transformations to be applied to the first set of DNS records to generate a second set of DNS records in a DNS server-independent format;
generate the second set of DNS records in the DNS server-independent format using the first set of DNS records and the first transformation set;
determine, based at least partly on (1) an association of the domain with a second DNS server and (2) the notification from the first DNS server, to update domain-specific data at the second DNS server;
determine a second transformation set associated with the second DNS server, wherein the second transformation set comprises one or more transformations to be applied to the second set of DNS records to generate a third set of DNS records in a second server-specific format associated with the second DNS server;
generate the third set of DNS records using the second set of DNS records and the second transformation set; and
update the domain-specific data at the second DNS server using the third set of DNS records.
2. The system of claim 1 , wherein the one or more computer processors configured to generate the second set of DNS records are further configured to generate, based at least partly on the first transformation set, a DNS record in the DNS server-independent format using a formatting alteration applied to a DNS record in the first server-specific format.
3. The system of claim 1 , wherein the one or more computer processors configured to generate the second set of DNS records are further configured to exclude a first DNS record of the first set of DNS records such that the second set of DNS records does not include a DNS record corresponding to the first DNS record, wherein the second set of DNS records comprises a DNS record corresponding to the DNS record that has been changed.
4. The system of claim 1 , wherein the one or more computer processors configured to generate the second set of DNS records are further configured to generate, based at least partly on the first transformation set, a record of the second set of DNS records using a combination of data from a record of the first set of DNS records and data from a data source separate from the first DNS server.
5. The system of claim 1 , wherein the one or more computer processors configured to generate the second set of DNS records are further configured to generate, based at least partly on the first transformation set, a DNS record of a first DNS record type using a DNS record of a second DNS record type from the first set of DNS records.
6. The system of claim 1 , wherein the one or more computer processors are further configured to subscribe to notifications from the first DNS server, and wherein the notification is received based at least partly on subscribing to the notifications from the first DNS server.
7. The system of claim 1 , wherein the one or more computer processors configured to retrieve the first set of DNS records from the first DNS server are further configured to parse a markup-language based user interface, received from the first DNS server, to derive the first set of DNS records.
8. A computer-implemented method comprising:
as implemented by a computing system comprising one or more computer processors configured to execute specific instructions,
receiving, from a first domain name system (“DNS”) server, a notification that a DNS record for a domain has changed, wherein the DNS record maps a resource associated with the domain to a network address of the resource;
retrieving, from the first DNS server, a first set of DNS records for the domain, wherein the first set of DNS records are retrieved in a first server-specific format associated with the first DNS server, and wherein the first set of DNS records comprises the DNS record that has been changed;
determining a first transformation set associated with the first DNS server, wherein the first transformation set comprises one or more transformations to be applied to the first set of DNS records to generate a second set of DNS records in a DNS server-independent format;
generating the second set of DNS records in the DNS server-independent format using the first set of DNS records and the first transformation set;
determining, based at least partly on (1) an association of the domain with a second DNS server and (2) the notification from the first DNS server, to update domain-specific data at the second DNS server;
determining a second transformation set associated with the second DNS server, wherein the second transformation set comprises one or more transformations to be applied to the second set of DNS records to generate a third set of DNS records in a second server-specific format associated with the second DNS server;
generating the third set of DNS records using the second set of DNS records and the second transformation set; and
updating the domain-specific data at the second DNS server using the third set of DNS records.
9. The computer-implemented method of claim 8 , wherein generating the second set of DNS records comprises generating, based at least partly on the first transformation set, a DNS record in the DNS server-independent format using a formatting alteration applied to a DNS record in the first server-specific format.
10. The computer-implemented method of claim 8 , wherein generating the second set of DNS records comprises excluding a first DNS record of the first set of DNS records such that the second set of DNS records does not include a DNS record corresponding to the first DNS record, wherein the second set of DNS records comprises a DNS record corresponding to the DNS record that has been changed.
11. The computer-implemented method of claim 8 , wherein generating the second set of DNS records comprises generating, based at least partly on the first transformation set, a record of the second set of DNS records using a combination of data from a record of the first set of DNS records and data from a data source separate from the first DNS server.
12. The computer-implemented method of claim 8 , wherein generating the second set of DNS records comprises generating, based at least partly on the first transformation set, a DNS record of a first DNS record type using a DNS record of a second DNS record type from the first set of DNS records.
13. The computer-implemented method of claim 8 , further comprising subscribing to notifications from the first DNS server, and wherein the notification is received based at least partly on subscribing to the notifications from the first DNS server.
14. The computer-implemented method of claim 8 , further comprising parsing a markup-language based user interface, received from the first DNS server, to derive the first set of DNS records.
15. A non-transitory computer storage medium storing executable code, wherein the executable code configures a computing system to perform a process comprising:
receiving, from a first domain name system (“DNS”) server, a notification that a DNS record for a domain has changed, wherein the DNS record maps a resource associated with the domain to a network address of the resource;
retrieving, from the first DNS server, a first set of DNS records for the domain, wherein the first set of DNS records are retrieved in a first server-specific format associated with the first DNS server, and wherein the first set of DNS records comprises the DNS record that has been changed;
determining a first transformation set associated with the first DNS server, wherein the first transformation set comprises one or more transformations to be applied to the first set of DNS records to generate a second set of DNS records in a DNS server-independent format;
generating the second set of DNS records in the DNS server-independent format using the first set of DNS records and the first transformation set;
determining, based at least partly on (1) an association of the domain with a second DNS server and (2) the notification from the first DNS server, to update domain-specific data at the second DNS server;
determining a second transformation set associated with the second DNS server, wherein the second transformation set comprises one or more transformations to be applied to the second set of DNS records to generate a third set of DNS records in a second server-specific format associated with the second DNS server;
generating the third set of DNS records using the second set of DNS records and the second transformation set; and
updating the domain-specific data at the second DNS server using the third set of DNS records.
16. The non-transitory computer storage medium of claim 15 , wherein generating the second set of DNS records comprises generating, based at least partly on the first transformation set, a DNS record in the DNS server-independent format using a formatting alteration applied to a DNS record in the first server-specific format.
17. The non-transitory computer storage medium of claim 15 , wherein generating the second set of DNS records comprises excluding a first DNS record of the first set of DNS records such that the second set of DNS records does not include a DNS record corresponding to the first DNS record, wherein the second set of DNS records comprises a DNS record corresponding to the DNS record that has been changed.
18. The non-transitory computer storage medium of claim 15 , wherein generating the second set of DNS records comprises generating, based at least partly on the first transformation set, a record of the second set of DNS records using a combination of data from a record of the first set of DNS records and data from a data source separate from the first DNS server.
19. The non-transitory computer storage medium of claim 15 , wherein generating the second set of DNS records comprises generating, based at least partly on the first transformation set, a DNS record of a first DNS record type using a DNS record of a second DNS record type from the first set of DNS records.
20. The non-transitory computer storage medium of claim 15 , the process further comprising subscribing to notifications from the first DNS server, and wherein the notification is received based at least partly on subscribing to the notifications from the first DNS server.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US18/352,671 US20240015135A1 (en) | 2019-12-11 | 2023-07-14 | Domain management and synchronization system |
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/710,537 US10715484B1 (en) | 2019-12-11 | 2019-12-11 | Domain management and synchronization system |
| US16/926,253 US11228559B2 (en) | 2019-12-11 | 2020-07-10 | Domain management and synchronization system |
| US17/576,749 US11706189B2 (en) | 2019-12-11 | 2022-01-14 | Domain management and synchronization system |
| US18/352,671 US20240015135A1 (en) | 2019-12-11 | 2023-07-14 | Domain management and synchronization system |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US17/576,749 Continuation US11706189B2 (en) | 2019-12-11 | 2022-01-14 | Domain management and synchronization system |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| US20240015135A1 true US20240015135A1 (en) | 2024-01-11 |
Family
ID=71519712
Family Applications (4)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US16/710,537 Active US10715484B1 (en) | 2019-12-11 | 2019-12-11 | Domain management and synchronization system |
| US16/926,253 Active US11228559B2 (en) | 2019-12-11 | 2020-07-10 | Domain management and synchronization system |
| US17/576,749 Active 2039-12-11 US11706189B2 (en) | 2019-12-11 | 2022-01-14 | Domain management and synchronization system |
| US18/352,671 Abandoned US20240015135A1 (en) | 2019-12-11 | 2023-07-14 | Domain management and synchronization system |
Family Applications Before (3)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US16/710,537 Active US10715484B1 (en) | 2019-12-11 | 2019-12-11 | Domain management and synchronization system |
| US16/926,253 Active US11228559B2 (en) | 2019-12-11 | 2020-07-10 | Domain management and synchronization system |
| US17/576,749 Active 2039-12-11 US11706189B2 (en) | 2019-12-11 | 2022-01-14 | Domain management and synchronization system |
Country Status (1)
| Country | Link |
|---|---|
| US (4) | US10715484B1 (en) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113342845B (en) * | 2021-06-23 | 2024-02-20 | 乐刷科技有限公司 | Data synchronization method, computer equipment and readable storage medium |
Citations (29)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6182148B1 (en) * | 1999-03-18 | 2001-01-30 | Walid, Inc. | Method and system for internationalizing domain names |
| US20010025320A1 (en) * | 1999-02-26 | 2001-09-27 | Seng Ching Hong | Multi-language domain name service |
| US20030115040A1 (en) * | 2001-02-09 | 2003-06-19 | Yue Xing | International (multiple language/non-english) domain name and email user account ID services system |
| US20040015584A1 (en) * | 2000-10-09 | 2004-01-22 | Brian Cartmell | Registering and using multilingual domain names |
| US20050124382A1 (en) * | 2003-12-09 | 2005-06-09 | Nokia Corporation | System and method for service naming and related directory structure in a mobile data network |
| US20060251239A1 (en) * | 2005-05-06 | 2006-11-09 | Taylor Kirk S | Method and system for providing and managing public telephone directory service |
| US20080294796A1 (en) * | 2004-06-04 | 2008-11-27 | Netpia.Com, Inc. | Native Language Internet Address System |
| US20090083400A1 (en) * | 2005-11-29 | 2009-03-26 | Nicolas Draca | Network Service Configuration Management |
| US7761570B1 (en) * | 2003-06-26 | 2010-07-20 | Nominum, Inc. | Extensible domain name service |
| US20120203781A1 (en) * | 2007-04-10 | 2012-08-09 | Apertio Limited | Variant entries in network data repositories |
| US20130275570A1 (en) * | 2012-04-16 | 2013-10-17 | Opendns, Inc. | Cross-Protocol Communication In Domain Name Systems |
| US20140207818A1 (en) * | 2013-01-22 | 2014-07-24 | Go Daddy Operating Company, LLC | Configuring an origin server content delivery using a pulled data list |
| US8812482B1 (en) * | 2009-10-16 | 2014-08-19 | Vikas Kapoor | Apparatuses, methods and systems for a data translator |
| US20140280916A1 (en) * | 2013-03-14 | 2014-09-18 | Verisign, Inc. | Reconciling internet dns zone file changes with origin change requests |
| US20140337530A1 (en) * | 2013-05-13 | 2014-11-13 | International Business Machines Corporation | Location-based domain name system service discovery |
| US20150215276A1 (en) * | 2014-01-29 | 2015-07-30 | Vmware, Inc. | System and method for dynamically configuring a dns server in a virtual network environment |
| US20150261753A1 (en) * | 2014-03-13 | 2015-09-17 | Verance Corporation | Metadata acquisition using embedded codes |
| US20150295882A1 (en) * | 2014-04-14 | 2015-10-15 | Verisign, Inc. | Computer-implemented method, apparatus, and computer-readable medium for processing named entity queries using a cached functionality in a domain name system |
| US20160179629A1 (en) * | 2014-12-19 | 2016-06-23 | Go Daddy Operating Company, LLC | System and method for domain name system restore points |
| US9479422B2 (en) * | 2013-03-15 | 2016-10-25 | Cable Television Laboratories, Inc. | mDNS-DNS architecture |
| US9680790B2 (en) * | 2013-08-29 | 2017-06-13 | Mastercard International Incorporated | Systems and methods for resolving data inconsistencies between domain name systems |
| US20170201417A1 (en) * | 2015-04-16 | 2017-07-13 | Go Daddy Operating Company, LLC | Dns file settings deferral |
| US20170316044A1 (en) * | 2016-04-28 | 2017-11-02 | Afilias Plc | Domain name registration and management |
| US20180309713A1 (en) * | 2015-12-24 | 2018-10-25 | Num Technology Ltd | Methods, apparatuses, and computer programs for data processing, and hierarchical domain name system zone files |
| US20180314603A1 (en) * | 2015-10-29 | 2018-11-01 | Datto, Inc. | Apparatuses, methods, and systems for storage and analysis of saas data and non-saas data for businesses and other organizations |
| US20190028431A1 (en) * | 2017-07-18 | 2019-01-24 | Citrix Systems, Inc. | Multi-service api controller gateway |
| US10243919B1 (en) * | 2016-09-28 | 2019-03-26 | Amazon Technologies, Inc. | Rule-based automation of DNS service discovery |
| US20190104177A1 (en) * | 2013-02-27 | 2019-04-04 | Pavlov Media, Inc. | Resolver-based data storage and retrieval system and method |
| US20200244529A1 (en) * | 2017-07-31 | 2020-07-30 | Threatstop, Inc. | Propagating information with network nodes |
Family Cites Families (80)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7117227B2 (en) * | 1998-03-27 | 2006-10-03 | Call Charles G | Methods and apparatus for using the internet domain name system to disseminate product information |
| US9141717B2 (en) * | 1999-03-22 | 2015-09-22 | Esdr Network Solutions Llc | Methods, systems, products, and devices for processing DNS friendly identifiers |
| US7251826B1 (en) * | 1999-06-07 | 2007-07-31 | Register.Com, Inc. | Domain manager for plural domains and method of use |
| US7197546B1 (en) * | 2000-03-07 | 2007-03-27 | Lucent Technologies Inc. | Inter-domain network management system for multi-layer networks |
| US7725602B2 (en) * | 2000-07-19 | 2010-05-25 | Akamai Technologies, Inc. | Domain name resolution using a distributed DNS network |
| US6769031B1 (en) * | 2000-09-29 | 2004-07-27 | Interland, Inc. | Dynamically incorporating updates to active configuration information |
| US6895431B1 (en) * | 2000-09-29 | 2005-05-17 | Interland, Inc. | Providing user access to dynamic updating of remote configuration information |
| WO2002069608A2 (en) * | 2001-01-16 | 2002-09-06 | Akamai Technologies, Inc. | Using virtual domain name service (dns) zones for enterprise content delivery |
| US20040044791A1 (en) * | 2001-05-22 | 2004-03-04 | Pouzzner Daniel G. | Internationalized domain name system with iterative conversion |
| WO2004072798A2 (en) * | 2003-02-10 | 2004-08-26 | Internap Network Services Corporation | Methods and systems for providing dynamic domain name system for inbound route control |
| US8473635B1 (en) * | 2003-05-19 | 2013-06-25 | Akamai Technologies, Inc. | Provisioning tool for a distributed computer network |
| US7356534B2 (en) * | 2004-03-15 | 2008-04-08 | Microsoft Corporation | Providing notifications for domain registration changes |
| US7464136B2 (en) * | 2004-11-05 | 2008-12-09 | Microsoft Corporation | Integrated messaging domain name setup |
| CA2631671A1 (en) * | 2005-12-01 | 2007-06-07 | Firestar Software, Inc. | System and method for exchanging information among exchange applications |
| US7870226B2 (en) * | 2006-03-24 | 2011-01-11 | International Business Machines Corporation | Method and system for an update synchronization of a domain information file |
| CN100558038C (en) * | 2006-03-31 | 2009-11-04 | 国际商业机器公司 | Service logger and related system and method |
| US7680956B2 (en) * | 2006-10-24 | 2010-03-16 | Cisco Technology, Inc. | Communicating additional information in a DNS update response by requesting deletion of a specific record |
| US7680876B1 (en) * | 2006-12-14 | 2010-03-16 | Cisco Technology, Inc. | Highly available domain name system |
| US7720998B2 (en) * | 2007-12-20 | 2010-05-18 | Fast Health Corporation | System and method for promoting messages to a plurality of websites from a centralized authority in response to a disaster or emergency event |
| GB2465138B (en) * | 2008-10-10 | 2012-10-10 | Afilias Technologies Ltd | Transcoding web resources |
| US8806057B2 (en) * | 2009-05-19 | 2014-08-12 | Neutral Space, Inc. | Internet-based value-added services system and method |
| US9384097B2 (en) * | 2009-09-09 | 2016-07-05 | Verisign, Inc. | Method and system for recovery of a failed registry |
| US8341252B2 (en) * | 2009-10-30 | 2012-12-25 | Verisign, Inc. | Internet domain name super variants |
| US8312125B1 (en) * | 2010-03-12 | 2012-11-13 | Local Corporation | System and method for bulk web domain generation and management |
| CN102347993B (en) * | 2010-07-28 | 2014-03-26 | 中国移动通信集团公司 | Network communication method and equipment |
| US20130151664A1 (en) * | 2010-09-02 | 2013-06-13 | Nec Corporation | Data transfer system |
| JP5716745B2 (en) * | 2010-09-02 | 2015-05-13 | 日本電気株式会社 | Data transfer system |
| US8694642B2 (en) * | 2010-10-21 | 2014-04-08 | Opendns, Inc. | Selective proxying in domain name systems |
| US8468222B2 (en) * | 2010-11-16 | 2013-06-18 | Edgecast Networks, Inc. | Discrete mapping for targeted caching |
| US9049244B2 (en) * | 2011-04-19 | 2015-06-02 | Cloudflare, Inc. | Registering for internet-based proxy services |
| US8645700B2 (en) * | 2011-04-29 | 2014-02-04 | Verisign, Inc. | DNSSEC inline signing |
| US10237231B2 (en) * | 2011-09-26 | 2019-03-19 | Verisign, Inc. | Multiple provisioning object operation |
| US9367560B1 (en) * | 2011-12-14 | 2016-06-14 | Unboundid, Corp. | Method, system and apparatus for synchronizing changes in a directory service |
| US10015134B2 (en) * | 2011-12-29 | 2018-07-03 | Verisign, Inc. | Methods and systems for creating new domains |
| US10341288B2 (en) * | 2012-01-11 | 2019-07-02 | Saguna Networks Ltd. | Methods circuits devices systems and associated computer executable code for providing conditional domain name resolution |
| US8930493B2 (en) * | 2012-03-20 | 2015-01-06 | International Business Machines Corporation | Inter-domain replication of service information |
| US10176335B2 (en) * | 2012-03-20 | 2019-01-08 | Microsoft Technology Licensing, Llc | Identity services for organizations transparently hosted in the cloud |
| US8935430B2 (en) * | 2012-06-29 | 2015-01-13 | Verisign, Inc. | Secondary service updates into DNS system |
| US9160809B2 (en) * | 2012-11-26 | 2015-10-13 | Go Daddy Operating Company, LLC | DNS overriding-based methods of accelerating content delivery |
| US9137094B1 (en) * | 2012-12-12 | 2015-09-15 | Google Inc. | Method for setting DNS records |
| US20140188872A1 (en) * | 2012-12-31 | 2014-07-03 | Go Daddy Operating Company, LLC | Tld markup language based domain name registering entity |
| US20140189489A1 (en) * | 2012-12-31 | 2014-07-03 | Go Daddy Operating Company, LLC | Creating and using a tld markup language |
| US20160055490A1 (en) * | 2013-04-11 | 2016-02-25 | Brandshield Ltd. | Device, system, and method of protecting brand names and domain names |
| US20150081440A1 (en) * | 2013-09-19 | 2015-03-19 | Jeffrey Blemaster | Methods and systems for generating domain name and directory recommendations |
| US10452373B2 (en) * | 2013-10-30 | 2019-10-22 | Oracle International Corporation | System and method for service import/export in a cloud platform environment |
| US9300623B1 (en) * | 2014-02-18 | 2016-03-29 | Sprint Communications Company L.P. | Domain name system cache integrity check |
| US20160021055A1 (en) * | 2014-06-05 | 2016-01-21 | Bluecat Networks, Inc. | Methods and systems for implementing very large dns zones |
| US9565147B2 (en) * | 2014-06-30 | 2017-02-07 | Go Daddy Operating Company, LLC | System and methods for multiple email services having a common domain |
| US9363269B2 (en) * | 2014-07-30 | 2016-06-07 | Zscaler, Inc. | Zero day threat detection based on fast flux detection and aggregation |
| US9769273B2 (en) * | 2014-08-22 | 2017-09-19 | Go Daddy Operating Company, LLC | System and method for automatic configuration of domain names for third party services |
| US9787634B1 (en) * | 2014-12-12 | 2017-10-10 | Go Daddy Operating Company, LLC | Suggesting domain names based on recognized user patterns |
| US10205701B1 (en) * | 2014-12-16 | 2019-02-12 | Infoblox Inc. | Cloud network automation for IP address and DNS record management |
| US9479533B2 (en) * | 2014-12-18 | 2016-10-25 | Go Daddy Operating Company, LLC | Time based authentication codes |
| US10659423B2 (en) * | 2014-12-19 | 2020-05-19 | Go Daddy Operating Company, LLC | System and method for modifying a domain name system template |
| US20160179822A1 (en) * | 2014-12-19 | 2016-06-23 | Go Daddy Operating Company, LLC | System and method for domain name system templates |
| US20160241509A1 (en) * | 2015-02-15 | 2016-08-18 | Microsoft Technology Licensing, Llc | Method and System for Integrating On-Premise and Cloud Domain Name Systems |
| US9647979B2 (en) * | 2015-04-16 | 2017-05-09 | Go Daddy Operating Company, LLC | DNS file settings deferral |
| US10193867B2 (en) * | 2015-05-27 | 2019-01-29 | Ping Identity Corporation | Methods and systems for API proxy based adaptive security |
| US10298539B2 (en) * | 2015-07-09 | 2019-05-21 | Microsoft Technology Licensing, Llc | Passive delegations and records |
| US9762542B2 (en) * | 2015-08-04 | 2017-09-12 | Farsight Security, Inc. | Parallel detection of updates to a domain name system record system using a common filter |
| US9264440B1 (en) * | 2015-08-04 | 2016-02-16 | Farsight Security, Inc. | Parallel detection of updates to a domain name system record system using a common filter |
| US20170063986A1 (en) * | 2015-08-31 | 2017-03-02 | Microsoft Technology Licensing, Llc | Target-driven tenant identity synchronization |
| US9977667B2 (en) * | 2015-09-09 | 2018-05-22 | Red Hat, Inc. | Updating software utilizing domain name system (DNS) |
| US10178195B2 (en) * | 2015-12-04 | 2019-01-08 | Cloudflare, Inc. | Origin server protection notification |
| US10356038B2 (en) * | 2015-12-14 | 2019-07-16 | Microsoft Technology Licensing, Llc | Shared multi-tenant domain name system (DNS) server for virtual networks |
| US10430847B2 (en) * | 2015-12-28 | 2019-10-01 | Plan Bee Llc | Dynamic domain registration |
| US10387854B2 (en) * | 2015-12-30 | 2019-08-20 | Go Daddy Operating Company, LLC | Registering a tertiary domain with revenue sharing |
| US10009288B2 (en) * | 2015-12-30 | 2018-06-26 | Go Daddy Operating Company, LLC | Registrant defined prerequisites for registering a tertiary domain |
| US10255260B2 (en) * | 2016-01-06 | 2019-04-09 | Bank Of America Corporation | System and framework for transforming domain data |
| US10516201B2 (en) | 2016-04-11 | 2019-12-24 | Samsung Electronics Co., Ltd. | Wireless communication system including polarization-agile phased-array antenna |
| US10033691B1 (en) * | 2016-08-24 | 2018-07-24 | Amazon Technologies, Inc. | Adaptive resolution of domain name requests in virtual private cloud network environments |
| US20180063141A1 (en) * | 2016-08-30 | 2018-03-01 | Verisign, Inc. | Integrated dns service provider services using token-based authentication |
| US10521453B1 (en) * | 2016-09-07 | 2019-12-31 | United Services Automobile Association (Usaa) | Selective DNS synchronization |
| US10505961B2 (en) * | 2016-10-05 | 2019-12-10 | Amazon Technologies, Inc. | Digitally signed network address |
| WO2018176406A1 (en) * | 2017-03-31 | 2018-10-04 | 北京大学深圳研究生院 | Top-level domain name management method and system based on alliance chain |
| US11032127B2 (en) * | 2017-06-26 | 2021-06-08 | Verisign, Inc. | Resilient domain name service (DNS) resolution when an authoritative name server is unavailable |
| US10791086B2 (en) * | 2017-11-14 | 2020-09-29 | Cisco Technology, Inc. | Transparent DNS subtree redirection inclusive of subtree owner |
| US10785188B2 (en) * | 2018-05-22 | 2020-09-22 | Proofpoint, Inc. | Domain name processing systems and methods |
| AU2019326067A1 (en) * | 2018-08-21 | 2021-04-01 | Viruthagiri Thirumavalavan | Domain-based isolated mailboxes |
| US10904314B2 (en) * | 2018-10-31 | 2021-01-26 | Salesforce.Com, Inc. | Endpoint URL generation and management |
-
2019
- 2019-12-11 US US16/710,537 patent/US10715484B1/en active Active
-
2020
- 2020-07-10 US US16/926,253 patent/US11228559B2/en active Active
-
2022
- 2022-01-14 US US17/576,749 patent/US11706189B2/en active Active
-
2023
- 2023-07-14 US US18/352,671 patent/US20240015135A1/en not_active Abandoned
Patent Citations (29)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20010025320A1 (en) * | 1999-02-26 | 2001-09-27 | Seng Ching Hong | Multi-language domain name service |
| US6182148B1 (en) * | 1999-03-18 | 2001-01-30 | Walid, Inc. | Method and system for internationalizing domain names |
| US20040015584A1 (en) * | 2000-10-09 | 2004-01-22 | Brian Cartmell | Registering and using multilingual domain names |
| US20030115040A1 (en) * | 2001-02-09 | 2003-06-19 | Yue Xing | International (multiple language/non-english) domain name and email user account ID services system |
| US7761570B1 (en) * | 2003-06-26 | 2010-07-20 | Nominum, Inc. | Extensible domain name service |
| US20050124382A1 (en) * | 2003-12-09 | 2005-06-09 | Nokia Corporation | System and method for service naming and related directory structure in a mobile data network |
| US20080294796A1 (en) * | 2004-06-04 | 2008-11-27 | Netpia.Com, Inc. | Native Language Internet Address System |
| US20060251239A1 (en) * | 2005-05-06 | 2006-11-09 | Taylor Kirk S | Method and system for providing and managing public telephone directory service |
| US20090083400A1 (en) * | 2005-11-29 | 2009-03-26 | Nicolas Draca | Network Service Configuration Management |
| US20120203781A1 (en) * | 2007-04-10 | 2012-08-09 | Apertio Limited | Variant entries in network data repositories |
| US8812482B1 (en) * | 2009-10-16 | 2014-08-19 | Vikas Kapoor | Apparatuses, methods and systems for a data translator |
| US20130275570A1 (en) * | 2012-04-16 | 2013-10-17 | Opendns, Inc. | Cross-Protocol Communication In Domain Name Systems |
| US20140207818A1 (en) * | 2013-01-22 | 2014-07-24 | Go Daddy Operating Company, LLC | Configuring an origin server content delivery using a pulled data list |
| US20190104177A1 (en) * | 2013-02-27 | 2019-04-04 | Pavlov Media, Inc. | Resolver-based data storage and retrieval system and method |
| US20140280916A1 (en) * | 2013-03-14 | 2014-09-18 | Verisign, Inc. | Reconciling internet dns zone file changes with origin change requests |
| US9479422B2 (en) * | 2013-03-15 | 2016-10-25 | Cable Television Laboratories, Inc. | mDNS-DNS architecture |
| US20140337530A1 (en) * | 2013-05-13 | 2014-11-13 | International Business Machines Corporation | Location-based domain name system service discovery |
| US9680790B2 (en) * | 2013-08-29 | 2017-06-13 | Mastercard International Incorporated | Systems and methods for resolving data inconsistencies between domain name systems |
| US20150215276A1 (en) * | 2014-01-29 | 2015-07-30 | Vmware, Inc. | System and method for dynamically configuring a dns server in a virtual network environment |
| US20150261753A1 (en) * | 2014-03-13 | 2015-09-17 | Verance Corporation | Metadata acquisition using embedded codes |
| US20150295882A1 (en) * | 2014-04-14 | 2015-10-15 | Verisign, Inc. | Computer-implemented method, apparatus, and computer-readable medium for processing named entity queries using a cached functionality in a domain name system |
| US20160179629A1 (en) * | 2014-12-19 | 2016-06-23 | Go Daddy Operating Company, LLC | System and method for domain name system restore points |
| US20170201417A1 (en) * | 2015-04-16 | 2017-07-13 | Go Daddy Operating Company, LLC | Dns file settings deferral |
| US20180314603A1 (en) * | 2015-10-29 | 2018-11-01 | Datto, Inc. | Apparatuses, methods, and systems for storage and analysis of saas data and non-saas data for businesses and other organizations |
| US20180309713A1 (en) * | 2015-12-24 | 2018-10-25 | Num Technology Ltd | Methods, apparatuses, and computer programs for data processing, and hierarchical domain name system zone files |
| US20170316044A1 (en) * | 2016-04-28 | 2017-11-02 | Afilias Plc | Domain name registration and management |
| US10243919B1 (en) * | 2016-09-28 | 2019-03-26 | Amazon Technologies, Inc. | Rule-based automation of DNS service discovery |
| US20190028431A1 (en) * | 2017-07-18 | 2019-01-24 | Citrix Systems, Inc. | Multi-service api controller gateway |
| US20200244529A1 (en) * | 2017-07-31 | 2020-07-30 | Threatstop, Inc. | Propagating information with network nodes |
Also Published As
| Publication number | Publication date |
|---|---|
| US11228559B2 (en) | 2022-01-18 |
| US20220247711A1 (en) | 2022-08-04 |
| US11706189B2 (en) | 2023-07-18 |
| US20210185003A1 (en) | 2021-06-17 |
| US10715484B1 (en) | 2020-07-14 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN107231402B (en) | HTTP request processing method, device and system | |
| USRE48725E1 (en) | Methods for accessing data in a compressed file system and devices thereof | |
| KR101150146B1 (en) | System and method for managing cached objects using notification bonds | |
| US20150237113A1 (en) | Method and system for file transmission | |
| CN104717314B (en) | A kind of IP management method and system, client, server | |
| CN104636437B (en) | A kind of processing method and processing device of event notification method, monitor | |
| US8301595B2 (en) | Using AMQP for replication | |
| CN115242882B (en) | A method and device for accessing k8s container environment based on transport layer routing | |
| CN107861686A (en) | File memory method, service end and computer-readable recording medium | |
| CN111259072A (en) | Data synchronization method and device, electronic equipment and computer readable storage medium | |
| US10069941B2 (en) | Scalable event-based notifications | |
| US20100325208A1 (en) | Methods and apparatus to forward documents in a communication network | |
| CN112929414A (en) | Upgrade package downloading method and device, electronic equipment and storage medium | |
| CN110958293B (en) | File transmission method, system, server and storage medium based on cloud server | |
| US20240015135A1 (en) | Domain management and synchronization system | |
| US11206302B2 (en) | Method and device for feeding back a resource file | |
| CN116132249B (en) | Website content distribution network architecture determination method, device and readable storage medium | |
| CN107786594B (en) | Service request processing method and device | |
| US8171066B2 (en) | Techniques for accessing remote files | |
| EP4122167B1 (en) | Systems and methods for detecting and resolving conflicts in internet services | |
| US11095605B1 (en) | Request routing utilizing encoded DNS-based messaging parameters | |
| CN117395265A (en) | Enterprise-level distributed hybrid cloud storage system based on IPFS | |
| CN107395416A (en) | A kind of data transmission method for uplink and server cluster | |
| CN114827083B (en) | Domain name resolution method, domain name resolution system and ECS (electronic control system) recursion server | |
| CN114500485B (en) | Data processing method and device |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |