Priority based differentiated DNS processing

Prioritizing requests made to a domain name system server to translate domain names into Internet Protocol addresses. First, the request is received in the domain name server. Next, the request is prioritized based on the source sending the request. Finally, the request is processed according to a priority assigned to the request.

BACKGROUND OF THE INVENTION

1. Technical Field

The present invention relates generally to an improved data processing system and in particular to a method and apparatus for processing data. Still more particularly, the invention relates to priority based processing of requests in a domain name system (DNS) server.

2. Description of Related Art

In very large networks, such as the Internet, Web sites have associated domain names so that users can easily remember and identify Web site locations. For example, mydomain123.com is a domain name that a user may enter into a Web browser. The browser retrieves information contained in a remote computer associated with that domain name, such as pictures, text, videos, files, links to other Web sites, and other content.

However, the client computer cannot use the alphanumeric domain name to find a particular Internet address. Instead, the domain name must be translated into an Internet Protocol (IP) address that data processing systems can recognize and use. An example of an IP address is 123.45.67.890.

A current method of performing the translation between domain names and IP addresses is to use a domain name system (DNS) server to perform the translation. The DNS server contains a database that associates domain names with IP addresses. Thus, when a domain name is entered in a browser, the browser communicates with a DNS server and requests the IP address associated with the domain name. In turn, the DNS server transmits the appropriate IP address to the client computer running the browser. The client computer then accesses the desired website using the IP address acquired from the DNS server.

Currently, a DNS server processes domain name translation requests on a first-come, first-serve basis. However, a problem has arisen in the current domain name system. Because of the dramatic growth of the Internet, a DNS server must be able to handle a truly vast number of requests for domain name translation. Even a simple command like “netstat −r” on a machine with a large routing table can cause a reasonably large burst of DNS translation requests. The problem can be exacerbated by malicious flooding attacks, which attempt to overwhelm a DNS server with too many spurious requests for domain name translation. Thus, translation requests that are considered important are delayed or even dropped as the DNS server attempts to handle vast numbers of less important requests. Hence, it would be advantageous to have a method, data processing system, and computer-implemented instructions for managing requests for domain name translations.

SUMMARY OF THE INVENTION

The present invention provides a method, apparatus and computer instructions for prioritizing requests in a domain name system server to translate domain names into Internet Protocol addresses. First, the request is received in the domain name server. Next, the request is prioritized based on the source sending the request. Finally, the request is processed according to a priority assigned to the request.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

Those of ordinary skill in the art will appreciate that the hardware inFIG. 3may vary depending on the implementation. Other internal hardware or peripheral devices, such as flash read-only memory (ROM), equivalent nonvolatile memory, or optical disk drives and the like, may be used in addition to or in place of the hardware depicted inFIG. 3. In addition, the processes of the present invention may be applied to a multiprocessor data processing system.

As another example, data processing system300may be a stand-alone system configured to be bootable without relying on some type of network communication interfaces. As a further example, data processing system300may be a personal digital assistant (PDA) device, which is configured with ROM and/or flash ROM in order to provide non-volatile memory for storing operating system files and/or user-generated data.

The present invention provides a method, apparatus and computer instructions for prioritizing requests in a domain name system (DNS) server to translate domain names into Internet Protocol addresses. First, the request is received in the domain name server. Next, the request is prioritized based on the source sending the request. Finally, the request is processed according to a priority assigned to the request.

FIG. 4is a block diagram illustrating different groups of source data processing systems interacting with a DNS server, in accordance with a preferred embodiment of the present invention. DNS server400may be a server data processing system, such as server104inFIG. 1or data processing system200inFIG. 2. Source Group A402, Source Group B404, and Source Group C406may each contain a number of server and client data processing systems, such as server104inFIG. 1, data processing system200inFIG. 2, clients108,110, and112inFIG. 1, and data processing system300inFIG. 3. DNS server400may connect to each data processing system in Source Group A402, Source Group B404, and Source Group C406via a network, such as network102inFIG. 1or the Internet. Each data processing system in each source group may also be part of the network.

DNS server400processes requests from a wide variety of source data processing systems in each of Source Group A402, Source Group B404, and Source Group C406. Each request is a request to translate an alphanumeric domain name, such as mydomain.com, into an Internet Protocol address, such as 123.45.67.890. DNS server400contains a large database of domain names, corresponding Internet Protocol addresses, appropriate software and hardware to perform the translation, and appropriate software and hardware to transmit the translated Internet Protocol address back to the requesting source data processing system.

In an illustrative embodiment, requests from Source Group A402should be given higher priority than requests from Source Group B404. In turn, requests from Source Group B404are to be given higher priority than requests from Source Group C406. For example, Source Group A402may be other DNS servers, Source Group B404may be data processing systems that have been given a preselected priority, and Source Group C406may be any other data processing system making a request of DNS server400.

DNS server400includes a database containing data regarding a variety of source data processing systems. DNS server400may use the database to assign a priority to a request to translate a domain name. For example, DNS server400may include a database that allows DNS server400to recognize whether a request comes from a data processing system in Source Group A402, Source Group B404, or Source Group C406. DNS server400will then assign a priority to the request accordingly.

AlthoughFIG. 4shows three source groups arranged in a particular priority according to particular types of data processing systems, many other embodiments are possible. For example, more or fewer source groups may be used. A source group may include all data processing systems having a preselected priority level, instead of including systems of a particular type of data processing system. A data processing system may be assigned to a source group according to many other types of selection factors, such as geographic location, the total number of requests made to the DNS server in a certain period of time, whether the request is part of a batch of similar requests, and other factors.

In other examples, the priority of a DNS request can be assigned using other methods. For example, priority can be given to a particular source, a source assigned by a client, or groups of sources assigned by a client. In addition, priority need not be assigned by source groups. For example, the DNS server may contain a database and software that allows the DNS server to identify the type of source data processing system or the identity of the source data processing system and prioritize the request accordingly.

In another illustrative embodiment, prioritization is performed based on information contained in the request. For example, a request can include a tag associated with the data packet that makes up the request. The tag may contain information regarding the priority of the request. DNS server400includes an appropriate algorithm to interpret the data in the tag. DNS server400then assigns the request a priority based on data contained in the tag. DNS server400processes the request according to the assigned priority.

In this illustrative embodiment, the client data processing system adds the tag or provides tag data when sending the request. Thus, some cooperation from the source is required. In another illustrative embodiment, the client data processing system should be a trusted data processing system in order to prevent flooding attacks on the DNS server. A trusted data processing system is a data processing system that DNS server400is programmed to recognize as trusted.

In this manner, the client data processing system is capable of assigning the priority of the request. Thus, the client data processing system may assign a high priority to certain requests, and a low priority to others. For example, if a client data processing system needs an immediate domain name translation to process a business transaction, the client data processing system includes data in the tag to indicate that the process has a high priority. On the other hand, if the client data processing system is processing a command to gather a vast number of IP address, and time to complete the command is less of a problem, then each request for translation may contain a tag that places the request at a lower priority.

In addition, the methods for assigning priority to a domain name translation request may be combined. For example, DNS server400may contain an algorithm adapted to recognize information contained in tags associated with incoming requests. In addition, the algorithm may be further adapted such that DNS server400recognizes the source data processing system sending the request and prioritize the request accordingly. The algorithm may prioritize requests in any particular manner with regard to requests having tags and requests recognized as coming from different source data processing systems.

Whatever method is used to prioritize an incoming request for domain name translation, the DNS server may use a scheduling algorithm to ensure that requests are processed according to the appropriate priority. For example, a request may be queued to one of a set of queues. Requests of a high priority are assigned to a first queue and requests of lower priorities are assigned to other queues accordingly. The DNS server then processes requests in the first queue first, a second queue second, and so on until all requests have been processed. A DNS server may also spend a certain amount of resource processing each queue simultaneously so that all queues receive some attention from the DNS server. However, queues with higher priority receive more resources from the DNS server if the DNS server does not have enough resources to process all incoming requests for domain name translation.

For example, the DNS server may include an algorithm that schedules requests according to a weighting system. Each incoming request receives a weight of 1, 2, or 3, depending on the tag information, the Internet Protocol address of the source, or both. A weight 3 request is assigned to a queue that receives highest priority, a weight 1 request is assigned to a queue that receives lowest priority, and a weight 2 request is assigned to a queue that receives higher priority than a weight 1 request but lower priority than a weight 3 request. In this case, the DNS server processes three packets from the weight 3 queue, then processes two requests from the weight 2 queue, and then processes one request from the weight 1 queue. Thus, 3/6 (or ½) of the DNS server's resources are used to processes the weight 3 queue, 2/6 (or ⅓) of the DNS server's resources are used to process the weight 2 queue, and ⅙ of the DNS server's resources are used to process the weight 1 queue.

Although the above example shows three queues of weights 1, 2, and 3, any number of queue systems may be used. For example, three priority queues of weight 1, 2, and 4 may be used so that the processor uses 4/7 of processor resources on the weight 4 queue, 2/7 of processor resources on the weight 2 queue, and 1/7 of resources on the weight 1 queue. In addition, more or less weight queues may be used.

FIG. 5is a flowchart illustrating a method of generating a DNS request with a priority tag, in accordance with a preferred embodiment of the present invention. The processes begins with a source or client data processing system adding a tag to a request for a domain name translation (step500). Adding a tag includes both adding extra data to a request data packet and filling in form data in the request data packet, as described further below. The client data processing system then transmits the DNS request to a DNS server (step502). The client data processing system then waits for a response from the DNS server (step504). A determination is made whether the client data processing system has received the response (step506). If a response has not been received, then the process returns to step504and the client data processing system continues to wait for a response. If a response has been received, then the process terminates, with the client data processing system processing the response as needed. Returning to step504, if a predetermined amount of time expires, then the process may terminate prematurely to prevent the process from repeating endlessly.

In an illustrative embodiment, the tag may be any portion of a data packet that makes up the request for translation of a domain name into an Internet Protocol address. For example, the normally unused “Z”, 3-bit long field in the fourth octet of the DNS request can be used for this purpose. In this case, the tag allows the DNS server to have up to eight levels of priority. In addition, other parts of the DNS data packet may be used to assign more or less levels of priority.

In another illustrative embodiment, the tag is added to a data packet that makes up the request for translation of a domain name. In this case, the tag may include a pre-selected number of levels of priority.

FIG. 6is a flowchart illustrating a method of priority-based processing of a request for a domain name translation in a DNS server, in accordance with a preferred embodiment of the present invention. The process begins as the DNS server receives a request for translation of a domain name from a client data processing system (step600). The DNS server prioritizes the request according to data contained in the tag (step602). The DNS server then processes the request according to a priority determined during step502(step604), with the process terminating thereafter. Finally, the DNS server transmits a response to the client (step606). The response includes the IP address corresponding to the domain name received by the DNS server.

FIG. 7is a flowchart illustrating a method of generating a DNS request, in accordance with a preferred embodiment of the present invention. The process begins as a source or client data processing system transmits a request to translate a domain name to a domain name system (DNS) server (step700). The client data processing system then waits for a response from the DNS server (step702). A determination is made whether the client data processing system has received the response (step704). If a response has not been received, then the process returns to step702and the client data processing system continues to wait for a response. If a response has been received, then the process terminates, with the client data processing system processing the response as needed. Returning to step702, if a predetermined amount of time expires, then the process may terminate prematurely to prevent the process from repeating endlessly.

FIG. 8is a flowchart illustrating a method of priority-based processing of a request for a domain name translation in a DNS server, in accordance with a preferred embodiment of the present invention. The process begins with the DNS server receiving a request to translate a domain name into an IP address (step800). The DNS server then prioritizes the request based on the nature or type of source data processing system (step802). For example, the DNS server may maintain a mapping table which is used to look up the priority of the request based on the Internet Protocol address of the source data processing system. In another example, the DNS server prioritizes the request based on a preferred source, sources from a particular client, or other characteristics of the source. The DNS server then processes the request according to a priority established during step802(step804). After processing the request, the DNS server transmits a response to the source or client data processing system (step806). The response includes the IP address associated with the transmitted domain name. The process terminates thereafter.

The mechanism of the present invention has several advantages over currently available systems and methods for processing requests for domain name translation. For example, DNS requests from important machines or processes in a network have an assured level of service. In addition, the DNS server is less vulnerable to a flooding attack. Furthermore, tag-based or source-based differentiation can be used, depending on resource constraints.

The tag-based methods described herein have the advantage that the mechanism used in the DNS server to route the request to the corresponding priority queue is relatively simple only a simple tag lookup is required. Another advantage is that the granularity of the priority assignment can be at the level of individual processes, rather than the entire machine. Thus, the tag-based method is highly efficient.

The source-based methods described herein have the advantage that no change is needed on the source-side. Source data processing systems requesting domain name translations will function normally. The only change needed is in the DNS server, which will use an algorithm to prioritize domain name translation requests as described above. Thus, source-based methods are easier to implement, particular over very large networks such as the Internet, though are less efficient than tag-based methods.

Although the methods and devices described herein are used to prioritize requests to translate a domain name into an IP address in a DNS server, the methods and devices described herein may be used to prioritize requests of servers on different types of networks. For example, if a local area network (LAN) server receives a request to translate a name of a device on the network, then a tag may be attached to the request. The LAN server prioritizes when to handle the request according to information contained within the tag, as described above. Likewise, the LAN server can prioritize the request based on the identity of the client computer making the request, the identity of the user making the request, or any other parameter. In addition, the methods and devices described above can be used to prioritize other kinds of requests made of data processing systems in a data processing environment, such as a request to print a file, process a file, or execute a program.