U.S. patent application number 12/961729 was filed with the patent office on 2011-03-31 for method and apparatus for looking up configuration information for a network node.
This patent application is currently assigned to APPLE INC.. Invention is credited to Stuart D. Cheshire.
Application Number | 20110075591 12/961729 |
Document ID | / |
Family ID | 34960768 |
Filed Date | 2011-03-31 |
United States Patent
Application |
20110075591 |
Kind Code |
A1 |
Cheshire; Stuart D. |
March 31, 2011 |
METHOD AND APPARATUS FOR LOOKING UP CONFIGURATION INFORMATION FOR A
NETWORK NODE
Abstract
One embodiment of the present invention provides a system for
looking up location-specific configuration information for a
network node or a subnet. During system operation, a network node
creates a query message containing a key that comprises an Internet
Protocol (IP) prefix and a string, wherein the IP prefix identifies
the network node or the subnet, and the string specifies the type
of configuration information. The network node then sends the query
message to a name server, which is part of a distributed system
that provides a global naming service, wherein the name server
additionally stores configuration information. Finally, the network
node receives a response message from the name server, wherein the
response message contains the requested configuration
information.
Inventors: |
Cheshire; Stuart D.; (San
Jose, CA) |
Assignee: |
APPLE INC.
Cupertino
CA
|
Family ID: |
34960768 |
Appl. No.: |
12/961729 |
Filed: |
December 7, 2010 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
10877401 |
Jun 25, 2004 |
7864709 |
|
|
12961729 |
|
|
|
|
Current U.S.
Class: |
370/255 |
Current CPC
Class: |
H04L 67/18 20130101;
H04L 61/303 20130101; H04L 41/0823 20130101; H04L 67/34 20130101;
H04L 61/2015 20130101; H04L 61/1511 20130101 |
Class at
Publication: |
370/255 |
International
Class: |
H04L 12/28 20060101
H04L012/28 |
Claims
1. A method for configuring a service in a network node, the method
comprising: creating a Domain Name System (DNS) query packet at the
network node, wherein the DNS query packet specifies a service that
is to be configured at the network node; sending the DNS query
packet to a DNS server that is configured to provide a name
resolution service, wherein the DNS server is further configured to
provide configuration information for the service; receiving a DNS
response packet from the DNS server, wherein the DNS response
packet includes configuration information for the service; and
configuring the service at the network node using the configuration
information from the DNS response packet.
2. The method of claim 1, wherein the configuration information is
specific to a corresponding level of granularity.
3. The method of claim 2, wherein the level of granularity is one
of: a host, a network node, a subnet, a location, or a company.
4. The method of claim 1, wherein creating the DNS query packet
comprises: prepending a configuration-identifier associated with
the service to an address or a subnet of the network node to obtain
a query string; appending ".in-addr.arpa." to the query string to
create a key; and writing the key into a DNS query field in the DNS
query packet.
5. A method for providing configuration for configuring a service
in a network node, the method comprising: at a DNS server,
receiving a DNS query packet from a network node, wherein the DNS
query packet specifies a service that is to be configured at the
network node; retrieving configuration information for the service
from a database in the DNS server; creating a DNS response packet
that includes the configuration information; and sending the DNS
response packet from the DNS server to the network node, wherein
the configuration information in the DNS response packet
facilitates the network node configuring the service at the network
node.
6. The method of claim 5, wherein the configuration information
that is retrieved from the database in the DNS server is specific a
corresponding level of granularity.
7. The method of claim 6, wherein the level of granularity is one
of: a host, a network node, a subnet, a location, or a company.
8. The method of claim 5, retrieving the configuration information
from the database in the DNS server comprises accessing one or more
resource-records.
9. A computer-readable storage medium storing instructions that,
when executed by a computer, cause the computer to perform a method
for configuring a service in a network node, the method comprising:
creating a DNS query packet at the network node, wherein the DNS
query packet specifies a service that is to be configured at the
network node; sending the DNS query packet to a DNS server that is
configured to provide a name resolution service, wherein the DNS
server is further configured to provide configuration information
for the service; receiving a DNS response packet from the DNS
server, wherein the DNS response packet includes configuration
information for the service; and configuring the service at the
network node using the configuration information from the DNS
response packet.
10. The method of claim 9, wherein the configuration information is
specific to a corresponding level of granularity.
11. The method of claim 10, wherein the level of granularity is one
of: a host, a network node, a subnet, a location, or a company.
12. The computer-readable storage medium of claim 9, wherein
creating the DNS query packet comprises: prepending a
configuration-identifier associated with the service to an address
or a subnet of the network node to obtain a query string; appending
".in-addr.arpa." to the query string to create a key; and writing
the key into a DNS query field in the DNS query packet.
13. A computer-readable storage medium storing instructions that,
when executed by a computer, cause the computer to perform a method
for providing configuration for configuring a service in a network
node, the method comprising: at a DNS server, receiving a DNS query
packet from a network node, wherein the DNS query packet specifies
a service that is to be configured at the network node; retrieving
configuration information for the service from a database in the
DNS server; creating a DNS response packet that includes the
configuration information; and sending the DNS response packet from
the DNS server to the network node, wherein the configuration
information in the DNS response packet facilitates the network node
configuring the service at the network node.
14. The computer-readable storage medium of claim 13, wherein the
configuration information that is retrieved from the database in
the DNS server is specific a corresponding level of
granularity.
15. The computer-readable storage medium of claim 14, wherein the
level of granularity is one of: a host, a network node, a subnet, a
location, or a company.
16. The computer-readable storage medium of claim 13, retrieving
the configuration information from the database in the DNS server
comprises accessing one or more resource-records.
17. An apparatus used for configuring a service in a network node,
the apparatus comprising: in the network node, a creating mechanism
in the network node configured to create a DNS query packet,
wherein the DNS query packet specifies a service that is to be
configured at the network node; a sending mechanism configured to
send the DNS query packet to a DNS server that is configured to
provide a name resolution service, wherein the DNS server is
further configured to provide configuration information for the
service; a receiving mechanism configured to receive a DNS response
packet from the DNS server, wherein the DNS response packet
includes configuration information for the service; and a
configuring mechanism configured to configure the service at the
network node using the configuration information from the DNS
response packet.
18. The apparatus of claim 17, wherein the configuration
information is specific to a corresponding level of granularity
from one of: a host, a network node, a subnet, a location, or a
company.
19. An apparatus for providing configuration for configuring a
service in a network node, the apparatus comprising: in a DNS
server, a receiving mechanism configured to receive a DNS query
packet from a network node, wherein the DNS query packet specifies
a service that is to be configured at the network node; a looking
up mechanism configured to retrieve configuration information for
the service from a database in the DNS server; a creating mechanism
configured to create a DNS response packet that includes the
configuration information; and a sending mechanism configured to
send the DNS response packet from the DNS server to the network
node, wherein the configuration information in the DNS response
packet facilitates the network node configuring the service at the
network node.
20. The apparatus of claim 19, wherein the configuration
information is specific to a corresponding level of granularity
from one of: a host, a network node, a subnet, a location, or a
company.
Description
RELATED APPLICATION
[0001] The present patent is a continuation of, and hereby claims
priority under 35 U.S. .sctn.120 to, pending U.S. patent
application Ser. No. 10/877,401, entitled "Method and Apparatus for
Looking up Configuration Information for a Network Node," by
inventor Stuart D. Cheshire, filed on 25 Jun. 2004 (Attorney Docket
No. APL-P3398).
BACKGROUND
[0002] 1. Field of the Invention
[0003] The present invention relates to the process of looking up
configuration information for a network node. More specifically,
the present invention relates to the process of looking up
configuration information for a network node by sending a query
message to a name server, which is part of a distributed system
that provides a global naming service.
[0004] 2. Related Art
[0005] The Internet is permeating more and more aspects of our
lives--from buying cameras to buying real estate, and from reading
a newspaper to watching a movie.
[0006] Due to the Internet's complexity, a network node, such as a
computer, that wants to participate in the Internet needs to lookup
a large amount of configuration information. For example, a network
node typically needs to look up the name of an e-mail server,
before it can send or receive e-mail.
[0007] The configuration information that a network node needs to
lookup tends to be location specific. For example, the name of an
e-mail server for a network node in an organization can be
different from the name of an e-mail server for another network
node within the same organization. Furthermore, it is cumbersome to
ask the user to lookup the configuration information. Hence, there
is a strong need for a mechanism that allows a network node to
automatically lookup configuration information on its own.
[0008] DHCP (Dynamic Host Configuration Protocol) is a
commonly-used protocol that was designed to automatically assign IP
addresses to network nodes. It has subsequently been extended to
allow a network node to lookup configuration information. Today,
many network nodes use DHCP for looking up configuration
information.
[0009] Unfortunately, there are many drawbacks in using DHCP for
looking up configuration information. Since DHCP is typically used
only once during system boot, the network node gets only one chance
to lookup configuration information. This is a severe limitation,
because it forces the network node to guess what kind of
configuration information it is going to need in the future. For
example, if the network node does not lookup the NetBIOS (Network
Basic Input Output System) name server during system boot, the
network node may not be able to provide this information to an
application that requires this information during normal system
operation, thereby preventing the application from running
properly.
[0010] Furthermore, since configuration information can change over
time, the configuration information that was obtained using DHCP
during system boot can be out of date.
[0011] Note that, although it is possible to use DHCP to lookup
configuration information during normal system operation, such
lookup operations may not be supported by all DHCP servers.
Moreover, performing a lookup during normal system operation may
cause the DHCP server to assign a new IP address to the network
node, which can cause many applications to malfunction.
[0012] Furthermore, DHCP can only support up to 255 types of
configuration information, which places a hard limit on the types
of configuration information that can be looked up using DHCP.
[0013] In addition, one of the benefits of IPv6 is that it allows a
network node to configure IPv6 addresses for its interfaces without
requiring a DHCP server. This is beneficial because it reduces the
burden on network operators by reducing the number of servers they
need to maintain. However, if network operators have to continue
using DHCP servers even after upgrading to IPv6, one of the
important advantages of using IPv6 will be eliminated.
[0014] Hence, what is needed is a method and apparatus for looking
up a wide range of location-specific configuration information for
a network node, wherein the method and apparatus does not have the
drawbacks described above.
SUMMARY
[0015] One embodiment of the present invention provides a system
for looking up location-specific configuration information for a
network node or a subnet. During system operation, a network node
creates a query message containing a key that comprises an Internet
Protocol (IP) prefix and a string, wherein the IP prefix identifies
the network node or the subnet, and the string specifies the type
of configuration information. The network node then sends the query
message to a name server, which is part of a distributed system
that provides a global naming service, wherein the name server
additionally stores configuration information. Finally, the network
node receives a response message from the name server, wherein the
response message contains the requested configuration
information.
[0016] In a variation on this embodiment, a name server receives a
query message from a network node, wherein the query message
contains a key that comprises an IP prefix and a string, wherein
the IP prefix identifies a network node or a subnet, and the string
specifies the type of configuration information. The name server
then looks up the configuration information in a configuration
database using the key. Finally, the name server sends a response
message to the network node, wherein the response message contains
the configuration information.
[0017] In a variation on this embodiment, the IP prefix can include
all of the bits of an IP address.
[0018] In a variation on this embodiment, the key is created by
first reversing the bytes of the IP prefix, and representing the
reversed bytes of the IP prefix as a string. Next, a string that
specifies the type of configuration information is prepended to the
reversed-IP-prefix string. Finally, the string ".in-addr.arpa." is
appended to the resulting string to form the entire key.
[0019] In a variation on this embodiment, the name server belongs
to the Domain Name System (DNS).
[0020] In a variation on this embodiment, the query message can be
a DNS-query message.
[0021] In a variation on this embodiment, the response message can
be a DNS-response message.
[0022] In a variation on this embodiment, the IP prefix can be an
IP version 4 prefix or an IP version 6 prefix.
BRIEF DESCRIPTION OF THE FIGURES
[0023] FIG. 1 illustrates a network that is connected to multiple
network nodes, namely, a computer, an SMTP (Simple Mail Transfer
Protocol) server, an NTP (Network Time Protocol) server, an NetBIOS
(Network Basic Input Output System) server, a POP3 (Post Office
Protocol 3) server, and a DNS (Domain Name System) name server
containing configuration information in accordance with an
embodiment of the present invention.
[0024] FIG. 2 illustrates a DNS packet that contains multiple
pieces of information that can be used by a network node, such as a
computer, to exchange information with a DNS name server in
accordance with an embodiment of the present invention.
[0025] FIG. 3 illustrates the structure of a query that makes up
the queries field in a DNS packet in accordance with an embodiment
of the present invention.
[0026] FIG. 4 illustrates the structure of a resource record that
can be used by the DNS name server to provide information in
response to a query in accordance with an embodiment of the present
invention.
[0027] FIG. 5 presents a flowchart illustrating a process that a
network node, such as a computer, can use to lookup configuration
information by querying a DNS name server containing configuration
information in accordance with an embodiment of the present
invention.
DETAILED DESCRIPTION
[0028] The following description is presented to enable any person
skilled in the art to make and use the invention, and is provided
in the context of a particular application and its requirements.
Various modifications to the disclosed embodiments will be readily
apparent to those skilled in the art, and the general principles
defined herein may be applied to other embodiments and applications
without departing from the spirit and scope of the present
invention. Thus, the present invention is not intended to be
limited to the embodiments shown, but is to be accorded the widest
scope consistent with the principles and features disclosed
herein.
[0029] The data structures and code described in this detailed
description are typically stored on a computer readable storage
medium, which may be any device or medium that can store code
and/or data for use by a computer system. This includes, but is not
limited to, magnetic and optical storage devices such as disk
drives, magnetic tape, CDs (Compact Discs) and DVDs (Digital
Versatile Discs or Digital Video Discs), and computer instruction
signals embodied in a transmission medium (with or without a
carrier wave upon which the signals are modulated). For example,
the transmission medium may include a communications network, such
as the Internet.
Network
[0030] FIG. 1 illustrates a network 104 that is connected to
multiple network nodes, namely, a computer 102, an SMTP (Simple
Mail Transfer Protocol) server 118, an NTP (Network Time Protocol)
server 120, an NetBIOS (Network Basic Input Output System) server
122, a POP3 (Post Office Protocol 3) server 124, and a DNS (Domain
Name System) name server containing configuration information 116
in accordance with an embodiment of the present invention.
[0031] Network 104 can generally include any type of wire or
wireless communication channel capable of coupling together network
nodes. This includes, but is not limited to, a local area network,
a wide area network, or a combination of networks. In one
embodiment of the present invention, network 104 includes the
Internet.
[0032] A network node, such as a computer 102, can generally
include any type of communication device capable of communicating
with other network nodes via a network. This includes, but is not
limited to, a computer system based on a microprocessor, a
mainframe computer, a server, a printer, a video camera, an
external disk drive, a router, a switch, a personal organizer, and
a mobile phone.
[0033] Network 104 allows a source network-node, such as a computer
102, to communicate with a target network-node, such as an SMTP
server 118.
[0034] But, before the communication can take place, the source
network-node, computer 102, needs to know the name or the IP
address of the target network-node, SMTP server 118. Typically,
such configuration information can be obtained by computer 102
using DHCP during system boot and can be stored for later use.
Configuration Information
[0035] FIG. 1 illustrates a collection of configuration information
106 that can be stored on a computer 102 in accordance with an
embodiment of the present invention. This collection of
configuration information 106 includes one or more pieces of
configuration information, such as, an SMTP server name 108, an NTP
server name 110, a POP3 server name 112, and a NetBIOS server name
114. Among other uses, collection of configuration information 106
allows computer 102 to provide various services to its users. For
example, computer 102 can use the SMTP server name 108, which is
part of collection of configuration information 106, to communicate
with the SMTP server 118, thereby providing e-mail services to its
end users.
Structure of a DNS Packet
[0036] FIG. 2 illustrates a DNS packet 200 that contains multiple
pieces of information that can be used by a network node, such as a
computer 102, to exchange information with a DNS name server 116 in
accordance with an embodiment of the present invention.
[0037] DNS-query packets and DNS-response packets both use the same
DNS packet format. Specifically, a DNS packet 200 contains an
identification field 202, which allows a network node, such as a
computer 102, to match queries to the corresponding responses. DNS
packet 200 also contains a flags field 204, which among other
things, indicates whether the DNS packet 200 is a query or a
response.
[0038] Furthermore, DNS packet 200 contains four variable-length
fields, namely, queries 214, response resource-records 216,
authority response-records 218, and additional information
response-records 220. These variable-length fields are used for
exchanging information between a network node, computer 102, and a
DNS name server 116.
[0039] Additionally, DNS packet 200 contains four other fields,
namely, a number of queries field 206, a number of response
resource-records field 208, a number of authority resource-records
field 210, and a number of additional information resource-records
field 212, which specify the number of entries in the four
variable-length fields.
Structure of a Query
[0040] FIG. 3 illustrates the structure of a query 300 that makes
up the queries field 214 in accordance with an embodiment of the
present invention. Query 300 contains a domain name field 302,
which specifies the domain name that is being queried. Furthermore,
query 300 includes a query type field 304, and a query class field
306, which specifies the type and the class of the query 300,
respectively.
Structure of a Resource Record
[0041] FIG. 4 illustrates the structure of a resource record 400
that can be used by a DNS name server 116 to provide information in
response to a query in accordance with an embodiment of the present
invention.
[0042] Specifically, resource record 400 contains a domain name
field 402, which specifies the domain name under consideration.
Resource record 400 also contains a resource-record type field 404
and a resource-record class field 406, which specifies the type and
class of the resource record, respectively. Additionally, resource
record 400 includes a time to live field 408, which specifies the
amount of time (in seconds) that the resource record can be cached
by a network node, such as a computer 102. Furthermore, resource
record 400 contains a resource data field 412, which is a
variable-length field that can be used by DNS name server 116 to
provide information to the network node, computer 102, in response
to a query. Resource record 400 also contains a resource data
length field 410, which specifies the amount of data in the
variable-length resource data field 412.
Process of Looking up Configuration Information
[0043] FIG. 5 presents a flowchart illustrating the process that a
network node, such as a computer 102, can use to lookup
configuration information by querying a DNS name server containing
configuration information 116 in accordance with an embodiment of
the present invention.
[0044] First, computer 102 creates a DNS-query packet 200, which
includes a query 300 containing a key (step 502). More
specifically, the domain name 302 in the query 300 comprises the
key, which is created by first reversing the bytes of the IP prefix
and representing the reversed IP-prefix as a string. Next, a string
that specifies the type of configuration information is prepended
to the reversed-IP-prefix string. Finally, the string
".in-addr.arpa." is appended to the resulting string form the
entire key. Note that the string ".in-addr.arpa." represents a
special domain in DNS that is used for address-to-name
mappings.
[0045] For example, if the computer 102, whose IP address is
17.255.12.34 with subnet mask 255.255.0.0, wants to lookup the NTP
server name 110, it would create a query 300 with domain name 302
that contains the key "4.dhcpopt.255.17.in-addr.arpa", wherein
"4.dhcpopt." is a string that specifies the type of configuration
information, "255.17" is a string representation of the reversed
IP-prefix, and ".in-addr.arpa." is the appended string. Note that,
the string "4.dhcpopt." refers to DHCP option 4, which corresponds
to the NTP server name, as defined in IETF (Internet Engineering
Task Force) RFC (Request for Comments) 2132. It will be readily
apparent to one skilled in the art that every DHCP option defined
in IETF RFC 2132 can be similarly converted into a string that
specifies the type of configuration information.
[0046] Next, the computer sends the DNS-query packet 200 (step 504)
to a DNS name server containing configuration information 116. The
DNS name server containing configuration information 116 then
receives the DNS-query packet 200 (step 506). Next, the DNS name
server containing configuration information 116 looks up the
configuration information in its database using the key in the
query (step 508), which is contained in the DNS-query packet 200.
The DNS name server containing configuration information 116 then
sends a response message containing the configuration information
(step 510). Finally, computer 102 receives the response message
(step 512) containing the configuration information, thereby
allowing computer 102 to use the configuration information to
perform its task.
[0047] Furthermore, a network node, such as a computer 102, can
send multiple queries to the DNS name server containing
configuration information 116 to lookup configuration information
at different levels of granularity. For example, the network node
can send a query containing the key
"4.dhcpopt.34.12.255.17.in-addr.arpa" to find host-specific
configuration that applies to that host alone. On the other hand,
the network node can send a query containing the key
"4.dhcpopt.255.17.in-addr.arpa" to find subnet-specific
configuration information that applies to all network nodes on that
subnet. Moreover, the network node can send a query containing the
key "4.dhcpopt.17.in-addr.arpa" to find company-wide configuration
information that applies uniformly to all the network nodes in a
company.
[0048] Note that DNS was designed so that network nodes could query
it during normal system operation. Hence, by using DNS instead of
DHCP to store configuration information, the present invention
overcomes one of the limitations of DHCP, in which the network node
was restricted to lookup configuration information during system
boot only. Furthermore, a network node can keep its configuration
information up to date by periodically querying a DNS name server
containing configuration information. Moreover, in the present
invention, the type of configuration information is specified by an
arbitrary string, such as "4.dhcpopt.". Hence, the present
invention can potentially support infinite types of configuration
information, whereas DHCP can support only up to 255 types of
configuration information.
[0049] The foregoing descriptions of embodiments of the present
invention have been presented for purposes of illustration and
description only. They are not intended to be exhaustive or to
limit the present invention to the forms disclosed. Accordingly,
many modifications and variations will be apparent to practitioners
skilled in the art. Additionally, the above disclosure is not
intended to limit the present invention. The scope of the present
invention is defined by the appended claims.
* * * * *