Source: http://www.google.de/patents/US20030172183
Timestamp: 2013-05-21 13:57:07
Document Index: 434273653

Matched Legal Cases: ['art 600', 'art 600', 'art 600', 'art 600', 'art 800', 'art 800', 'art 800', 'art 800', 'art 800', 'art 900', 'art 900', 'art 900', 'art 800', 'arts 800', 'art 900', 'art 600', 'art 600', 'art 800']

Patent US20030172183 - System, method and computer program product for caching domain name system ... - Google PatenteSuche Bilder Maps Play YouTube News Gmail Drive Mehr » Erweiterte Patentsuche | Webprotokoll | Anmelden Erweiterte Patentsuche PatenteA system, method and computer program product is provided for caching domain name system (DNS) information on a network gateway. In particular, a network gateway that interfaces one or more customer premises equipment (CPE) devices to an IP network maintains a centralized on-board cache for storing domain...http://www.google.de/patents/US20030172183?utm_source=gb-gplus-sharePatent US20030172183 - System, method and computer program product for caching domain name system information on a network gateway Ver�ffentlichungsnummerUS20030172183 A1PublikationstypAnmeldung Ver�ffentlichungsdatum11. Sept. 2003Eingetragen25. Febr. 2002 Priorit�tsdatum25. Febr. 2002Auch ver�ffentlicht unterUS7152118 Ver�ffentlichungsnummerUS 2003/0172183 A1US2003/0172183A1 ErfinderCharles AndersonJason WillisThomas WillisUrspr�nglich Bevollm�chtigterBroadcom Corporation US-Klassifikation709/245709/230Internationale KlassifikationH04L29/12 UnternehmensklassifikationH04L61/15H04L29/12047H04L29/12811H04L61/2015H04L61/6009H04L29/12216 Europ�ische KlassifikationH04L 61/20A1H04L 61/60BH04L 29/12A3AH04L 29/12A9BReferenzen Referenziert von (19)Externe LinksUSPTO USPTO-Zuordnung EspacenetSystem, method and computer program product for caching domain name system information on a network gatewayUS 20030172183 A1 Zusammenfassung A system, method and computer program product is provided for caching domain name system (DNS) information on a network gateway. In particular, a network gateway that interfaces one or more customer premises equipment (CPE) devices to an IP network maintains a centralized on-board cache for storing domain names and corresponding IP addresses. The domain names and IP addresses in the cache are used by the network gateway to resolve DNS queries generated by application programs running on the CPE devices in a manner that is transparent to the CPE devices and that does not expend CPE resources. The cache may be initially loaded by an attached CPE or an external network entity and is continuously populated with information extracted from DNS messages exchanged between a CPE device and the external IP network. Zeichnungen(11) Anspr�che
What is claimed is: 1. A method for caching domain name system information in a network gateway that includes a customer premises equipment interface, a network interface, and a cache for storing domain names and corresponding IP addresses, comprising: receiving a domain name system query from a customer premises equipment over the customer premises equipment interface, said query including an unresolved domain name; determining if said unresolved domain name is stored in the cache; if said unresolved domain name is stored in the cache, obtaining an IP address corresponding to said unresolved domain name from the cache, generating a response to said query that includes said IP address corresponding to said unresolved domain name, and providing said response to the customer premises equipment interface for transmission to said customer premises equipment; and if said unresolved domain name is not stored in said cache, providing said query to the network interface for transmission to a network for resolution of said query. 2. The method of claim 1, further comprising: receiving a domain name system response from said network over the network interface, said response including a response domain name and an IP address corresponding to said response domain name; storing said response domain name and said IP address corresponding to said response domain name in the cache; and providing said response to the customer premises equipment interface for transmission to said customer premises equipment. 3. The method of claim 1, further comprising: loading the cache with a preliminary set of domain names and corresponding IP addresses prior to said receiving said domain name system query. 4. The method of claim 3, wherein said loading is initiated by an entity on said network. 5. The method of claim 3, wherein said loading is initiated by said customer premises equipment. 6. The method of claim 1, further comprising: continuously monitoring packets received by the customer premises equipment interface from said customer premises equipment to identify domain name system queries. 7. The method of claim 6, wherein said continuous monitoring comprises examining a protocol header field of said packets received by the customer premises equipment interface from said customer premises equipment to identify domain name system messages. 8. The method of claim 7, wherein said continuous monitoring further comprises examining a parameter field of said domain name system messages received by the customer premises equipment interface from said customer premises equipment to identify domain name system queries. 9. The method of claim 2, further comprising: continuously monitoring packets received by the network interface from said network to identify domain name system responses. 10. The method of claim 9, wherein said continuous monitoring comprises examining a protocol header field of said packets received by the network interface from said network to identify domain name system messages. 11. The method of claim 10, wherein said continuous monitoring further comprises examining a parameter field of said domain name system messages received by the network interface from said network to identify domain name system responses. 12. A method for caching domain name system information in a network gateway that includes a customer premises equipment interface, a network interface, and a cache for storing domain names and corresponding IP addresses, comprising: receiving a domain name system response from a network over the network interface, said response including a response domain name and an IP address corresponding to said response domain name; storing said response domain name and said IP address corresponding to said response domain name in the cache; and providing said response to the customer premises equipment interface for transmission to a customer premises equipment. 13. The method of claim 12, further comprising: continuously monitoring packets received by the network interface from said network to identify domain name system responses. 14. The method of claim 13, wherein said continuous monitoring comprises examining a protocol header field of said packets received by the network interface from said network to identify domain name system messages. 15. The method of claim 14, wherein said continuous monitoring further comprises examining a parameter field of said domain name system messages received by the network interface from said network to identify domain name system responses. 16. A method for caching domain name system information in a network gateway that includes a customer premises equipment interface, a network interface, and a cache for storing domain names and corresponding IP addresses, comprising: receiving a domain name system response from a network over the network interface; determining if said response includes a response domain name and an IP address corresponding to said response domain name; if said response includes a response domain name and an IP address corresponding to said response domain name, storing said response domain name and said IP address corresponding to said response domain name in the cache, and providing said response to the customer premises equipment interface for transmission to a customer premises equipment; and if said response does not include a response domain name and an IP address corresponding to said response domain name, providing said response to the customer premises equipment interface for transmission to said customer premises equipment without storing any information in the cache. 17. A network gateway, comprising: a memory, said memory comprising a cache that stores domain names and corresponding IP addresses; a customer premises equipment interface that receives a domain name system query from a customer premises equipment, said query including an unresolved domain name; a network interface that communicates with a network; and a processor coupled to said memory, said customer premises equipment interface, and said network interface, said processor configured to receive said domain name system query from said customer premises equipment and to determine if said unresolved domain name is stored in said cache; wherein said processor is farther configured to obtain an IP address corresponding to said unresolved domain name from said cache, generate a response to said query that includes said IP address corresponding to said unresolved domain name, and provide said response to said customer premises equipment interface for transmission to said customer premises equipment, if said unresolved domain name is stored in said cache; and wherein said processor is further configured to provide said query to said network interface for transmission to a network for resolution of said query if said unresolved domain name is not stored in said cache. 18. The network gateway of claim 17 wherein: said network interface is adapted to receive a domain name system response from said network, said response including a response domain name and an IP address corresponding to said response domain name; and wherein said processor is further configured to store said response domain name and said IP address corresponding to said response domain name in said cache and provide said response to said customer premises equipment interface for transmission to said customer premises equipment. 19. The network gateway of claim 17, wherein said customer premises equipment interface is a home phoneline network interface, an Ethernet interface, or a Universal Serial Bus interface. 20. The network gateway of claim 17, wherein said network interface comprises a cable modem system interface. 21. The network gateway of claim 17, wherein said memory comprises an SDRAM. 22. The network gateway of claim 17, wherein said processor is further configured to continuously monitor packets received by said customer premises equipment interface from said customer premises equipment to identify domain name system queries. 23. The network gateway of claim 18, wherein said processor is further configured to continuously monitor packets received by said network interface from said network to identify domain name system responses. 24. A network gateway, comprising: a memory, said memory comprising a cache that stores domain names and corresponding IP addresses; a customer premises equipment interface that communicates with a customer premises equipment; a network interface that receives a domain name system response from a network, said response including a response domain name and an IP address corresponding to said response domain name; and a processor coupled to said memory, said customer premises equipment interface, and said network interface, said processor configured to store said response domain name and said IP address corresponding to said response domain name in said cache and provide said response to the customer premises equipment interface for transmission to a customer premises equipment. 25. The network gateway of claim 24, wherein said processor is further configured to continuously monitor packets received by said network interface from said network to identify domain name system responses. 26. A network gateway, comprising: a memory, said memory comprising a cache that stores domain names and corresponding IP addresses; a customer premises equipment interface that communicates with a customer premises equipment; a network interface that receives a domain name system response from a network; and a processor coupled to said memory, said customer premises equipment interface, and said network interface, said processor configured to receive said response from said network interface and determine if said response includes a response domain name and an IP address corresponding to said response domain name; wherein said processor is further configured such that, if said response includes a response domain name and an IP address corresponding to said response domain name, said processor stores said response domain name and said IP address corresponding to said response domain name in said cache and provides said response to said customer premises equipment interface for transmission to said customer premises equipment; and wherein said processor is further configured such that, if said response does not include a response domain name and an IP address corresponding to said response domain name, said processor provides said response to said customer premises equipment interface for transmission to said customer premises equipment without storing any information in said cache. 27. A computer program product comprising a computer useable medium having computer program logic for enabling a processor in a network gateway to perform caching of domain name system information, said network gateway further including a customer premises equipment interface, a network interface, and a cache for storing domain names and corresponding IP addresses, comprising: means for enabling the processor to receive a domain name system query from said customer premises equipment interface, said query including an unresolved domain name; means for enabling the processor to determine if said unresolved domain name is stored in the cache; means for enabling the processor to obtain an IP address corresponding to said unresolved domain name from the cache, generate a response to said query that includes said IP address corresponding to said unresolved domain name, and provide said response to the customer premises equipment interface, if said unresolved domain name is stored in the cache; and means for enabling the processor to provide said query to the network interface if said unresolved domain name is not stored in the cache. 28. The computer program product of claim 27, further comprising: means for enabling the processor to receive a domain name system response from the network interface, said response including a response domain name and an IP address corresponding to said response domain name; means for enabling the processor to store said response domain name and said IP address corresponding to said response domain name in the cache; and means for enabling the processor to provide said response to the customer premises equipment interface. 29. The computer program product of claim 27, further comprising: means for enabling the processor to load the cache with a preliminary set of domain names and corresponding IP addresses prior to receiving any domain name system queries from the customer premises equipment interface. 30. The computer program product of claim 27, further comprising: means for enabling the processor to continuously monitor packets received from the customer premises equipment interface to identify domain name system queries. 31. The computer program product of claim 28, further comprising: means for enabling the processor to continuously monitor packets received from the network interface to identify domain name system responses. 32. A computer program product comprising a computer useable medium having computer program logic for enabling a processor in a network gateway to perform caching of domain name system information, the network gateway further including a customer premises equipment interface, a network interface, and a cache for storing domain names and corresponding IP addresses, comprising: means for enabling the processor to receive a domain name system response from the network interface, said response including a response domain name and an IP address corresponding to said response domain name; means for enabling the processor to store said response domain name and said IP address corresponding to said response domain name in the cache; and means for enabling the processor to provide said response to the customer premises equipment interface. 33. The computer program product of claim 32, further comprising: means for enabling the processor to continuously monitor packets received from the network interface to identify domain name system responses.
[0037] The present invention will now be described with reference to the accompanying drawings. In the drawings, like reference numbers indicate identical or functionally similar elements. Additionally, the left-most digit(s) of a reference number identifies the drawing in which the reference number first appears. DETAILED DESCRIPTION OF THE INVENTION [0038] Table of Contents [0039] A. Introduction [0040] B. Exemplary Operating Environment [0041] 1. Example CPE in Accordance with Embodiments of the Present Invention [0042] 2. Example Network Gateway in Accordance with Embodiments of the Present Invention [0043] C. DNS Caching on a Network Gateway in Accordance with Embodiments of the Present Invention [0044] D. Selective DNS Caching on a Network Gateway Based on CPE Input in Accordance with Embodiments of the Present Invention [0045] E. Conclusion [0046] A. Introduction [0047] The present invention utilize a system, method and computer program product for caching Domain Name System (DNS) information on a network gateway. In an embodiment, a network gateway maintains a centralized DNS cache that stores domain names and corresponding IP addresses. The network gateway utilizes the DNS cache to resolve DNS queries generated by application programs running on one or more attached CPE devices. In particular, the network gateway intercepts DNS queries directed from the one or more CPE devices to a network and resolves them using information from the DNS cache in a manner that is transparent to the CPE devices and that does not expend CPE resources. The DNS cache may be pre-loaded by an attached CPE device or external network entity and/or populated with information extracted from DNS messages exchanged between a CPE device and the external IP network. In an embodiment, the DNS cache is selectively loaded based on a list of frequently accessed domain names generated by an application program running on an attached CPE and provided to the gateway. [0048] B. Exemplary Operating Environment [0049]FIG. 2 depicts an exemplary environment 200 in which embodiments of the present invention may operate. The example operating environment 200 includes a plurality of customer premises equipment (CPE) devices 202, 212 and 214 interfaced to an IP network 206 via a network gateway 204. In this example, three CPE devices are shown connected to the network gateway 204; however, any number of customer devices may be attached. For example, in alternate example environments, only a single CPE 202 is connected to the network gateway 204. [0050] The representative CPE devices 202, 212, and 214 may each comprise a personal computer, data terminal equipment, or any other user device capable of executing applications that send and receive packets over the IP network 206 via the network gateway 204. The IP network 206 routes packets between the network gateway 204 and other network devices, such as a DHCP server 208 and a plurality of domain name servers 210 a through 210 n. In embodiments, at least a portion of the IP network 206 routes IP packets in accordance with well-known TCP/IP protocols. [0051] The network gateway 204 comprises an interface between the CPE devices 202, 212 and 214 and the IP network 206. In part, the network gateway 204 facilitates the bi-directional transfer of IP packets between the CPE devices 202, 212 and 214 and the IP network 206 by performing essential physical and link layer conversions between CPE-side and network-side transmission protocols. In embodiments, the network gateway 204 may comprise a cable modem, analog modem, DSL modem, ISDN adapter, Ethernet card, or any other interface that facilitates the transmission of IP packets between a CPE and an IP network. In accordance with embodiments of the present invention, the network gateway 204 further comprises a DNS cache for caching DNS information that is relevant to applications running on one or more of the attached CPE devices 202, 212, and 214, as will be described in more detail below. [0052]FIG. 3 illustrates a more particularized example of an environment 300 in which embodiments of the present invention may operate. In the example operating environment 300, a computer system 202 a, which is one embodiment of CPE 202, is interfaced to the IP network 206 through a network gateway device 204 a, which is one embodiment of the network gateway 204. The network gateway device 204 a includes a cable modem 302 for transferring IP packets between the computer system 202 a and the IP network 206. [0053] The IP network 206 of the example operating environment 300 includes a hybrid fiber coaxial (HFC) network 304, a cable headend 306, and a wide area network 310. The cable headend 306 includes a cable modem termination system (CMTS) 308 that receives packets sent from the cable modem 302 over the HFC network 304. The cable headend 304 operates to transfer IP packets between the HFC network 304 and the wide area network 310, thus enabling communication between the computer system 202 a and other network devices, such as the DHCP server 208 and the plurality of domain name servers 210 a through 210 n. In an embodiment, IP packets are transferred between the cable modem 302 and the CMTS 308 in accordance with standard DOCSIS or EuroDOCSIS protocols for cable modem systems, which are well-known in the art. [0054] 1. Example CPE in Accordance with Embodiments of the Present Invention [0055]FIG. 4 provides a more detailed example of the computer system 202 a, which is one example of a CPE 202. As shown in FIG. 4, the example computer system 202 a includes a processor 444 for executing software routines in accordance with embodiments of the present invention. Although a single processor is shown for the sake of clarity, the computer system 202 a may also comprise a multi-processor system. The processor 444 is connected to a communication infrastructure 442 for communication with other components of the computer system 202 a. The communication infrastructure 442 may comprise, for example, a communications bus, cross-bar, or network. [0056] Computer system 202 a further includes a main memory 446, such as a random access memory (RAM), and a secondary memory 448. The secondary memory 448 may include, for example, a hard disk drive 450 and/or a removable storage drive 452, which may comprise a floppy disk drive, a magnetic tape drive, an optical disk drive, or the like. The removable storage drive 452 reads from and/or writes to a removable storage unit 454 in a well known manner. Removable storage unit 454 may comprise a floppy disk, magnetic tape, optical disk, or the like, which is read by and written to by removable storage drive 452. As will be appreciated by persons skilled in the art, the removable storage unit 454 includes a computer usable storage medium having stored therein computer software and/or data. [0057] In alternative embodiments, secondary memory 448 may include other similar means for allowing computer programs or other instructions to be loaded into computer system 202 a. Such means can include, for example, a removable storage unit 462 and an interface 460. Examples of a removable storage unit 462 and interface 460 include a program cartridge and cartridge interface (such as that found in video game console devices), a removable memory chip (such as an EPROM, or PROM) and associated socket, and other removable storage units 462 and interfaces 460 which allow software and data to be transferred from the removable storage unit 462 to computer system 202 a. [0058] Computer system 202 a further includes a display interface 402 that forwards graphics, text, and other data from the communication infrastructure 442 or from a frame buffer (not shown) for display to a user on a display unit 430. [0059] Computer system 202 a also includes a communication interface 464. Communication interface 464 allows software and data to be transferred between computer system 202 a and external devices via a communication path 466. In an embodiment of the present invention, the communication interface 464 permits IP packets to be transferred between the computer system 202 a and the network gateway device 204 a (see FIG. 3), which is coupled to the communication path 466. The communication interface 466 may comprise, for example, a Home Phone Network Alliance (HPNA) interface for communicating over an HPNA network, an Ethernet interface for communicating over an Ethernet, or a Universal Serial Bus (USB) interface for communicating over a USB. However, these examples are not limiting, and any communication interface 464 and any suitable 4 communication path 466 may be used to transfer data between the computer system 202 a and the network gateway device 204 a. [0060] As used herein, the term �computer program product� may refer, in part, to removable storage unit 452, removable storage unit 454, a hard disk installed in hard disk drive 450, or a carrier wave carrying software over a communication path 466 (wireless link or cable) to communication interface 464. A computer useable medium can include magnetic media, optical media, or other recordable media, or media that transmits a carrier wave or other signal. These computer program products are means for providing software to computer system 202 a. [0061] Computer programs (also called computer control logic) are stored in main memory 446 and/or secondary memory 448. Computer programs can also be received via communications interface 464. Such computer programs, when executed, enable the computer system 202 a to perform the features of the present invention as discussed herein. In particular, the computer programs, when executed, enable the processor 444 to perform features of the present invention. Accordingly, such computer programs represent controllers of the computer system 202 a. [0062] In embodiments of the present invention, the computer system 202 a comprises a personal computer operating under the Microsoft WINDOWS operating system. However, this example is not limiting. As will be appreciated by persons skilled in the relevant art from the teachings provided herein, a wide variety of other computer systems 202 a, and CPE devices 202, 212, and 214, may be utilized to practice the present invention. [0063] 2. Example Network Gateway in Accordance with Embodiments of the Present Invention [0064]FIG. 5 provides a more detailed example of the network gateway device 204 a, which is one example of a network gateway 204. As shown in FIG. 5, the example network gateway device 204 a comprises an integrated chip 502 which is coupled to two external memory devices, a non-volatile memory 504 and a volatile memory 506. The integrated chip 502 comprises a central processing unit (CPU) 518, a cable modem system interface 516, an HPNA interface 508, an Ethernet interface 510, a USB interface 512, an expansion bus interface 520, and a volatile memory interface 522. Each of these components is operatively interconnected via an internal system bus 514. [0065] The HPNA interface 508, the Ethernet interface 510 and the USB interface 512 each provide an interface between the network gateway device 204 a and one or more CPE devices over an HPNA network, an Ethernet, or a USB, respectively. For example, each of these interfaces may connect the network gateway device 204 a to a CPE device such as the computer system 202 a described in reference to FIGS. 3 and 4 above. In an embodiment, the HPNA interface 508 comprises an HPNA 2.0-compliant media access control (MAC) that connects to an external HPNA 2.0 analog front end (not shown) for interfacing to one or more home network devices. In an embodiment, the Ethernet interface 510 comprises a combined 802.3 Ethernet MAC and physical interface (PHY) for interfacing to one or more devices on a 10/100 Mb Ethernet. In an embodiment, the USB interface 512 comprises a USB 1.1 MAC and PHY for interfacing to the Universal Serial Bus of an attached CPE. [0066] The cable modem system interface 516 comprises the interface between the network gateway device 204 a and a cable modem network, such as the HFC network 304 of FIG. 3, to which it is connected via an external cable tuner device (not shown). In embodiments, the cable modem system interface 516 comprises a DOCSIS MAC and PHY for transmitting and receiving packets over a cable modem system in accordance with standard DOCSIS and/or EuroDOCSIS protocols. [0067] The network gateway device 204 a operates, in part, to process packets received from one or more CPE devices via the HPNA interface 508, the Ethernet interface 510, or the USB interface 512 for transmission to a cable modem network via the cable modem system interface 516. Conversely, the network gateway device 204 a processes packets received from the cable modem network via the cable modem system interface 516 for transmission to one or more CPE devices via the HPNA interface 508, the Ethernet interface 510, or the USB interface 512. Processing of packets includes necessary physical and link layer protocol conversions between the various interfaces described above as well as network address translation (NAT). Processing is carried out, in part, by the central processing unit (CPU) 518. [0068] The volatile memory 506 stores packets for processing by the CPU 518 and also comprises the execution memory space for the CPU 518. Additionally, in accordance with embodiments of the present invention, the volatile memory 506 includes a DNS cache 528 for the temporary storage of domain names and corresponding IP addresses, as will be discussed in more detail herein. However the invention is not limited to this embodiment. For example, in an alternate embodiment, the DNS cache 528 is stored in the non-volatile memory 504. [0069] As shown in FIG. 5, the volatile memory 506 is coupled to the internal bus 514 of the integrated chip 502 via a volatile memory interface 522. Although the volatile memory 506 is shown as an external component with respect to the integrated circuit 502, in an alternate embodiment, the volatile memory 506 may comprise an internal component of the integrated circuit 502. In an embodiment, the volatile memory 506 comprises an SDRAM. [0070] The non-volatile memory 504 stores program instructions that control the operation of the CPU 518. In an embodiment, the non-volatile memory resides on an expansion bus 524 external to the integrated chip 502. The expansion bus 524 is operably connected to the internal bus 514 of the integrated chip 502 via an expansion bus interface 520. Although the non-volatile memory 504 is shown as an external component with respect to the integrated circuit 502, in an alternate embodiment, the non-volatile memory 504 may comprise an internal component of the integrated circuit 502. In an embodiment, the non-volatile memory 504 comprises a flash memory. The non-volatile memory 504, or a computer useable medium that carries software for installation on the non-volatile memory 504, comprises a �computer program product,� as that term is used elsewhere herein. [0071] In an embodiment, the network gateway device 204 a comprises a BCM3360 High-Performance Advanced PHY Broadband Gateway Cable Modem, manufactured by Broadcom Corporation of Irvine, Calif. However, this example is not limiting. As will be appreciated by persons skilled in the relevant art from the teachings provided herein, a wide variety of network gateway devices 204 a, and network gateways 204, may be utilized to implement embodiments of the present invention. [0072] C. DNS Caching on a Network Gateway in Accordance with Embodiments of the Present Invention [0073] In accordance with embodiments of the present invention, a network gateway, such as the network gateway 204 of FIG. 2, maintains a DNS cache for the temporary storage of domain names and corresponding IP addresses. The DNS cache is utilized by the network gateway to resolve domain name queries generated by application programs running on one or more attached CPE devices, such as the CPE devices 202, 212 and 214 of FIG. 2, in a manner that is transparent to the CPE devices and that does not expend CPE resources. By maintaining a centralized DNS cache on the network gateway, embodiments of the present invention are capable of efficiently caching the DNS information that is most relevant to CPE devices attached to the network gateway 104. Furthermore, by maintaining the DNS cache on the network gateway 204, embodiments of the present invention permit domain name resolution to occur without requiring access to a domain name server over an IP network. [0074]FIG. 6 depicts a flowchart 600 of a method for caching DNS information on a network gateway in accordance with embodiments of the present invention. The invention, however, is not limited to the description provided by the flowchart 600. Rather, it will be apparent to persons skilled in the art from the teachings provided herein that other functional flows are within the scope and spirit of the present invention. [0075] For convenience, the flowchart 600 will be described with continued reference to the example operating environment of FIG. 3, the example computer system 202 a of FIG. 4 and the example network gateway device 204 a of FIG. 5. For example, the method described in flowchart 600 may be performed, in whole or in part, under the control of the CPU 518 of the network gateway device 204 a in accordance with program instructions stored in the non-volatile memory 504. However, the invention is not limited to those embodiments. [0076] It will be assumed for the purposes of this description that the computer system 202 a is executing an application, such as a TCP/IP application, that generates DNS queries. It will further be assumed that the computer system 202 a has been assigned a primary domain name server from among the plurality of domain name servers 210 a through 210 n that reside on the IP network 206. For example, the primary domain name server may be assigned during an exchange of DHCP messages between the computer system 202 a and the DHCP server 208 that occurs when the computer system 202 a first accesses the IP network 206 to receive an initial IP address assignment. The DHCP server 208 may be located at an Internet Service Provider (ISP) facility that services the computer system 202 a. [0077] As shown at optional step 602, the DNS cache may initially be populated with a set of domain names and corresponding IP addresses when the network gateway device 204 a first accesses the IP network 206. This optional loading step may be initiated by the network gateway device 204 a itself or by a machine on the IP network 206 such as the DHCP server 208 or the CMTS 308. For example, the DHCP server 208 may initiate the loading of the DNS cache during the initial exchange of DHCP messages between the computer system 202 a and the DHCP server 208 described above. Alternatively, this loading process may be initiated by the CMTS 308 during the initialization that occurs when the network gateway device 204 a first accesses the HFC network 304 as proscribed by DOCSIS protocols. In an embodiment, the initial set of domain names and corresponding IP addresses resides in a file on a network-attached server for downloading to the network gateway 204 a and storage in the DNS cache. [0078] The optional pre-loading step 602 may be used to allow a network entity to selectively provision a set of domain names and corresponding IP addresses into 3 the DNS cache at start-up. This DNS information preferably represents information that will be relevant to applications running on the computer system 202 a and any other CPE devices attached to the network gateway device 204 a. For example, in a �walled garden� scenario, in which a network entity such as the DHCP server 208 or the CMTS 308 restricts access by the computer system 202 a to certain addresses on the IP network, the DNS information downloaded at startup may correspond to those IP addresses that the computer system 202 a is permitted to access. [0079] At step 604, a DNS query is received from the computer system 202 a. In accordance with embodiments of the present invention, the network gateway 204 a identifies DNS messages by continuously examining the protocol header field of IP datagrams received via a CPE interface, such as the HPNA interface 508, the Ethernet interface 510, or the USB interface 512. If the protocol header field indicates that the IP datagram contains a DNS message, then the network gateway 204 a will examine the DNS message to determine if it comprises a DNS query. [0080] In an embodiment, DNS messages received from the computer system 202 a are formatted in accordance with the example DNS message format 700 of FIG. 7A. In such an embodiment, the network gateway device 204 a determines whether the DNS message constitutes a DNS query by examining the parameter field 704 of the DNS message. As shown in FIG. 7B, which provides a key 730 to the various bit values of the parameter field 704, a �0� in the first bit of the parameter field 704 indicates that the message is a DNS query. [0081] If the DNS message is a query, the network gateway device 204 a obtains an unresolved domain name from the DNS query. DNS queries formatted in accordance with the DNS message format 700 may include one or more domain names for resolution purposes. The question section 714 of such queries will normally include an entry for each unresolved domain name and the �number of questions� field 706 will indicate the total number of entries in the question section 714. FIG. 7C illustrates an example format 750 for an entry in the question section 714. As shown in FIG. 7C, each entry 750 includes a query domain name 752 for which resolution is sought. [0082] As shown at step 606, after the network gateway device 204 a has obtained an unresolved domain name from the DNS query, it then searches the DNS cache to determine if the unresolved domain name and corresponding IP address information is available therein. If the unresolved domain name is not in the cache, or if the cache is empty (for example, at network start-up in an embodiment where the optional cache loading step 602 is not performed) then a cache miss results. However, if the unresolved domain name and associated IP address information is stored in the DNS cache, then the network gateway 204 a will obtain the IP address information from the DNS cache, as shown at step 608, and generate a response to the DNS query that includes the IP address, as shown at step 610. [0083] In an embodiment, the network gateway device 204 a generates a DNS response in accordance with the DNS message format 700 shown in FIG. 7A. In such an embodiment, the identification field 702 is populated with the same 16-bit identification field used in the DNS query; however, a �1� is placed in the first bit of the parameter field 704 to indicate that the message is a response rather than a query, and the IP address from the DNS cache is provided as part of a resource record in the answer section 716. FIG. 7D illustrates an example format 770 for a resource record in the answer section 716. As shown in FIG. 7D, each resource record 770 includes a resource domain name 772, which comprises the domain name obtained from the original DNS query, and a resource data field 782, which is used to provide the corresponding IP address. As the example DNS message format 700 allows multiple name and address mappings to be provided in a single DNS response, the �number of answers� field 708 is used to indicated the total number of resource records in the answer section 716. [0084] In a further embodiment, the network gateway device 204 a utilizes the recursion desired bit of the parameter field 704 of the DNS query in determining how to build the DNS response. For example, the following rules may be utilized: [0085] (i) when all the information necessary to completely resolve the query is present in the DNS cache, a complete DNS response is built from the cached information, regardless of the value of the recursion desired bit. The time to live (TTL) value for each resource record in the DNS response is set to the time remaining from the TTL originally provided by the authoritative domain name server (see FIG. 7D); [0086] (ii) when recursion is requested (recursion desired bit=1) and not all information is available in the DNS cache to completely resolve the domain name, no cached response will be given and the query will be forwarded to the IP network for resolution in accordance with standard domain name resolution protocols (e.g., the query will be forwarded to the primary domain name server assigned to the CPE for resolution); [0087] (iii) when recursion is not requested (recursion desired bit=0) and not all information is available in the DNS cache to completely resolve the domain name, a DNS response will be built from the information available in the DNS cache. The TTL value for each resource record in the DNS response is set to the time remaining from the TTL originally provided by the authoritative domain name server (see FIG. 7D); and [0088] (iv) when no information for the given domain name is present in the DNS cache, no cached response will be given and the query will be forwarded to the IP network for resolution in accordance with standard domain name resolution protocols, regardless of the value of the recursion desired bit. [0089] After the network gateway device 204 a has generated a response to the DNS query, it transmits the response to the computer system 202 a over the appropriate CPE interface (e.g., HPNA interface 508, Ethernet interface 510, or USB interface 512), as shown at step 612. The application running on the computer system 202 a that generated the query may then extract the IP address from the response and use it to format packets for transmission via the network gateway device 204 a to the IP network 206. Alternately, the application may provide the IP address to a higher level application for a similar purpose. [0090] As shown at step 614, in the event that the network gateway device 204 a cannot locate the unresolved domain name and associated IP address information in the DNS cache, it forwards the query to the cable modem system interface 516 for transmission to the IP network 206. The query will then be resolved in accordance with standard DNS resolution protocols. For example, the DNS query may be forwarded to the primary domain name server assigned to the computer system 202 a for resolution in accordance with a recursive or iterative resolution protocol. [0091] At step 616, the network gateway device 204 a receives a response to the DNS query from the IP network 206 via the cable modem system interface 516. In accordance with embodiments of the present invention, the network gateway 204 a continuously examines the protocol header field of IP datagrams received via the cable modem system interface 516 to identify DNS messages received from the IP network 206. If the protocol header field indicates that the IP datagram contains a DNS message, then the network gateway 204 a will examine the DNS message to determine if it comprises a DNS response. [0092] In an embodiment, the network gateway device 204 a receives DNS messages from the IP network 206 a formatted in accordance with the example DNS message format 700 illustrated in FIG. 7A. In such an embodiment, the network gateway device 204 a determines whether the DNS message constitutes a DNS response by examining the parameter field 704. As shown in FIG. 7B, a �1� in the first bit of the parameter field 704 indicates that the DNS message is a DNS response. [0093] At step 618, the network gateway device 204 a examines the DNS response to determine if it resolves the query forwarded to the IP network 206 in step 614. Preferably, the network gateway device 204 a also examines the DNS response to determine if it resolves any other DNS queries previously forwarded to the IP network 206 by the network gateway 204 a. In an embodiment where the DNS message is formatted in accordance with the example format 700 of FIG. 7A, the network gateway device 204 a performs this step by examining the answer section 716 to identify any domain name and IP address mappings that may resolve previously-transmitted DNS queries. [0094] If the DNS response does not resolve a previously transmitted DNS query, then the network gateway device 204 a immediately forwards the response to the computer system 202 a over the appropriate CPE interface (e.g., HPNA interface 508, Ethernet interface 510, or USB interface 512), as shown at steps 618 and 620. However, if the DNS response does provide a domain name and IP address mapping that resolves a previously-transmitted DNS query, then the network gateway device 204 a stores the resolved domain name and IP address from the response in the DNS cache before forwarding the response to the computer system 202 a, as shown at steps 620 and 622. Note that it is also possible for a network-resolved query to return a pointer (e.g., a canonical name) to another domain name instead of an IP address. In an embodiment of the present invention, the network gateway device 204 a stores these pointers along with the queried domain name in the DNS cache for use in resolving DNS queries generated by the attached CPE device. [0095] As a result of the above-described method, the DNS cache on the network gateway 204 a will be populated with those domain names and IP addresses that are most relevant to the computer system 202 a and any other CPE devices attached to the network gateway device 204 a. In embodiments where the size of the DNS cache is limited, the DNS cache may be maintained in accordance with an algorithm that ensures that only the most recently queried domain names and IP addresses remain in the cache. This may be achieved, for example, by assigning time stamps to each domain name entry in the DNS cache to indicate when a domain name was last queried by an attached CPE device. When the demand for cache space exceeds the size of the cache, the cache entry with the oldest time stamp may be deleted to accommodate a new entry. [0096] In a further embodiment of the present invention, each entry in the cache is associated with a time-out value, and the network gateway device 204 a removes entries from the cache when the time-out value is reached or exceeded. The time-out value is derived from the time to live (TTL) value that is provided for each domain name-IP address binding in the answer section of a DNS response, as illustrated in FIG. 7D. The TTL value typically contains an integer that specifies the number of seconds that the responding authority guarantees the binding to remain. By removing the timed-out entries, the network gateway device 204 a eliminates potentially invalid bindings and increases cache space for storing newer bindings. Additionally, in accordance with this embodiment, when a CPE device queries a domain name that is located in the DNS cache that is close to timing out, the network gateway device 204 a satisfies the request with information stored in the cache, but also forwards the request to the IP network 206 for resolution in accordance with standard DNS resolution protocols. The network gateway device 204 a then uses the resulting DNS response from the IP network 206 to replace the expiring entry in the DNS cache. [0097] It will be appreciated by persons skilled in the art that additional information may be stored in the DNS cache as desired for use by the network gateway device 204 a and attached CPE devices. For example, many network domain name servers provide additional information beyond the IP address associated with a given domain name. Such information includes, but is not limited to, records from the authority section and additional information section of a DNS response, as illustrated in FIG. 7A. Authority records typically specify the domain name servers that are the authority for a given domain name. Additional information records typically contain resolution information for a domain name server described in the authority records section. This information may be stored in the DNS cache when available and provided to an attached CPE as part of the domain name resolution process. [0098] D. Selective DNS Caching Based on CPE Information in Accordance with Embodiments of the Present Invention [0099] In accordance with further embodiments of the present invention, a network gateway, such as the network gateway 204 of FIG. 2, selectively populates an on-board DNS cache based on information provided by an attached CPE, such as the CPE 202 of FIG. 2. More specifically, the CPE executes an application program that generates a list of frequently accessed domain names. The list is then used to generate and transmit DNS queries over an IP network, such as IP network 206, to identify IP addresses for each of the domain names. Resolved domain names and corresponding IP addresses are then stored in the gateway DNS cache for use by application programs running on the attached CPE device. [0100]FIG. 8 depicts a flowchart 800 of a method for selectively caching DNS information on a network gateway in accordance with embodiments of the present invention. The invention, however, is not limited to the description provided by the flowchart 800. Rather, it will be apparent to persons skilled in the art from the teachings provided herein that other functional flows are within the scope and spirit of the present invention. [0101] For convenience, the flowchart 800 will be described with continued reference to the example operating environment of FIG. 3, the example computer system 202 a of FIG. 4 and the example network gateway device 204 a of FIG. 5. For example, the method described in flowchart 800 may be performed, in whole or in part, under the control of the processor 444 of computer system 202 a in accordance with program instructions stored in main memory 446 or secondary memory 448, and under the control of the CPU 518 of network gateway device 204 a in accordance with program instructions stored in the non-volatile memory 504. However, the invention is not limited to those embodiments. [0102] The method of flowchart 800 begins with the execution of a CPE search application by the computer system 202 a. In an embodiment, the CPE search application is executed automatically as part of an operating system start-up routine that occurs whenever the computer system 202 a is powered on. In an alternate embodiment, the CPE search application is automatically executed on a periodic basis by the operating system of computer system 202 a while the operating system is active. In another alternate embodiment, the CPE search application is executed in accordance with selected user inputs to the computer system 202 a. For example, the CPE search application may be executed each time the user launches an application that utilizes DNS information, such as, for example, a Web browser that generates IP packets for transmission to the network gateway device 204 a. Preferably, the execution of the CPE search application is transparent to the user of the computer system 202 a. [0103] Once executed, the CPE search application searches one or more files on the computer system 202 a to identify frequently accessed domain names, as shown at step 804. In an embodiment, the CPE application searches one or more files on the computer system 202 a that are known to hold frequently used domain names. For example, the CPE application may search files associated with a Web browser, such as files that includes the domain names of favorite user Web sites, or with an electronic mail application, such as a file that identifies the domain name of one or more e-mail host data servers. Preferably, each of the files that is scanned has a commonly known or ascertainable format that is fixed over time. [0104] At step 806, the frequently accessed domain names identified by the CPE search application are provided to the network gateway device 204 a. In an embodiment, the CPE search application calls a software routine that packetizes the domain name information and transmits it to the network gateway device 204 a over the communication interface 464. The packets carrying the domain name information may be formatted in accordance with a proprietary protocol type defined within the bounds of TCP/IP for identification and processing by the network gateway device 204 a. [0105] In an alternate embodiment, the domain name information is stored in memory within the computer system 202 a, such as in a file stored in secondary memory 448, and is packetized and transmitted to the network gateway device 204 a at a later time. For example, in an embodiment, the stored domain name information is provided to the network gateway device 204 a when an appropriate request is received by the computer system 202 a from the network gateway device 204 a. In an embodiment, the request is formatted in accordance with a proprietary protocol type defined within the bounds of TCP/IP for identification and processing by the computer system 202 a. [0106] In a still further embodiment, the domain name information is provided to the network gateway device 204 a as a Management Information Base (MIB) for storage on the network gateway device 204 a using well-known network management protocols, such as Simple Network Management Protocol (SNMP) or Remote Monitoring (RMON) protocol. The MIB may be stored in the volatile memory 506 in the network gateway device 204 a or within dedicated registers accessible by the gateway CPU 518 (not shown in FIG. 5). Alternately, the domain name information may be stored as a MIB on the computer system 202 a and accessed by the network gateway device 204 a using well-known network management protocols. In such an embodiment, the MIB may be stored, for example, within the secondary memory 448 or within dedicated registers within the computer system 202 a (not shown in FIG. 4). [0107] Upon receiving the domain name information from the computer system 202 a, the network gateway device 204 a generates one or more DNS queries to resolve the identified domain names. The DNS queries are preferably formatted as iterative, as opposed to recursive, resolution requests, so that prolonged network searching may be avoided. In an embodiment, these DNS queries are formatted in accordance with the example DNS message format 700 of FIG. 7A. [0108] The network gateway 204 a then provides the DNS queries to the cable modem system interface 516 for transmission to a domain name server on the IP network 206 for resolution in accordance with standard DNS protocols, as shown at step 810. The domain name server selected by the network gateway device 204 a for resolution purposes may be identified by monitoring DNS messages received and/or sent by the computer system 202 a to extract the address of a domain name server, or may be provisioned into the network gateway device 204 a during network start-up by an external network entity such as the DHCP server 208 or the CMTS 308. [0109] At step 812, the network gateway device 204 a receives one or more responses to the DNS queries transmitted to the IP network in step 810. In an embodiment, the response is formatted in accordance with the example DNS message format 700 of FIG. 7. Where a domain name has been successfully resolved, the network gateway device 204 a extracts the domain name and its corresponding IP address from the DNS response and stores them in the DNS cache for future use by applications on the computer system 202 a, as shown at step 814. Where a domain name remains unresolved, the network gateway 204 a does not enter the domain name in the DNS cache, or enters it in the DNS cache with a null entry for the corresponding IP address, such that a cache miss will result for subsequent DNS queries directed to the same domain name. [0110]FIG. 9 depicts a flowchart 900 of an alternative method for selectively caching DNS information on a network gateway in accordance with embodiments of the present invention. The invention, however, is not limited to the description provided by the flowchart 900. Rather, it will be apparent to persons skilled in the art from the teachings provided herein that other functional flows are within the scope and spirit of the present invention. [0111] The first two steps of the flowchart 900 are substantially the same as steps 802 and 804 of the method described in reference to the flowchart 800 of FIG. 8. Namely, at step 902, the CPE application is executed and at step 904, the CPE application searches one or more CPE files to identify frequently accessed domain names. These steps have been described in more detail above. [0112] Once the frequently accessed domain names have been identified, the CPE application generates a DNS request for each frequently accessed domain name to resolve each domain name in accordance with standard DNS protocols, as shown at step 906. The CPE application may generate the DNS requests itself, or may call another application program resident on computer system 202 a to generate the requests. At step 908, the CPE provides the DNS requests to the network gateway 204 a for resolution purposes. [0113] Upon receiving the DNS requests, the network gateway 204 a forwards them to the cable modem system interface 516 for transmission to a domain name server on the IP network 206 for resolution in accordance with standard DNS protocols, as shown at step 910. [0114] At step 912, the network gateway device 204 a receives one or more responses to the DNS queries transmitted to the IP network in step 910. In an embodiment, the response is formatted in accordance with the example DNS message format 700 of FIG. 7 Where a domain name has been successfully resolved, the network gateway device 204 a extracts the domain name and its corresponding IP address from the DNS response and stores them in the DNS cache for future use by applications on the computer system 202 a, as shown at step 914. Where a domain name remains unresolved, the network gateway 204 a does not enter the domain name in the DNS cache, or enters it in the DNS cache with a null entry for the corresponding IP address, such that a cache miss will result for subsequent DNS queries directed to the same domain name. [0115] The methods described above in reference to flowcharts 800 and 900 advantageously permits a DNS cache on a network gateway to be selectively loaded with the domain names and IP addresses that are most frequently accessed by an attached CPE. Note that, in accordance with the method of flowchart 900, the normal DNS caching operations of the network gateway, as described in section C, are utilized to perform this selective loading of the DNS cache. [0116] In embodiments, either of these methods may be utilized to pre-load the DNS cache before execution of other DNS caching techniques, such as the technique described above in reference to flowchart 600. In particular, either of the methods may be used in addition to, or in lieu of, the optional cache pre-loading step 602 described in reference to flowchart 600. In an embodiment where the method described in reference to flowchart 800 is executed subsequent to the cache pre-loading step 602, the network gateway device 204 a may compare the frequently accessed domain names received from the computer system 202 a (see step 806 of FIG. 8) to the domain names pre-loaded into the DNS cache in step 602, to determine if the generation of DNS queries is necessary. Where a domain name is already loaded into the DNS cache, a DNS query need not be generated. [0117] E. Conclusion [0118] While various embodiments of the present invention have been described above, it should be understood that they have been presented by way of example only, and not limitation. It will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined in the appended claims. Accordingly, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents. CROSS-REFERENCE TO RELATED APPLICATIONS [0001] This application is related to co-pending utility application entitled �System and Method for Selectively Caching Domain Name System Information on a Network Gateway,� application Ser. No. __/___,___ (to be assigned), Attorney Docket No. 1875.1990000, filed concurrently herewith and incorporated by reference herein in its entirety.
Referenziert von Zitiert von PatentEingetragen Ver�ffentlichungsdatum Antragsteller TitelUS73244737. Okt. 200329. Jan. 2008Accenture Global Services GmbhConnector gatewayUS73280331. Okt. 20045. Febr. 2008Intellectual Ventures Fund 43 LlcWireless network system and methodUS742657620. Sept. 200216. Sept. 2008Network Appliance, Inc.Highly available DNS resolver and method for use of the sameUS757390313. Jan. 200511. Aug. 2009Yokogawa Electric CorporationIPv6/IPv4 translatorUS759423628. Juni 200422. Sept. 2009Intel CorporationThread to thread communicationUS762073218. Nov. 200417. Nov. 2009Kabushiki Kaisha ToshibaApparatus for and method of setting communication pathUS785372021. Apr. 200314. Dez. 2010Samsung Electronics Co., Ltd.Method for domain name system spoofing in local network systemUS78656171. Aug. 20054. Jan. 2011Infoblox Inc.Maintaining consistency in a databaseUS792578230. Juni 200812. Apr. 2011Amazon Technologies, Inc.Request routing using network computing componentsUS796259731. M�rz 200814. Juni 2011Amazon Technologies, Inc.Request routing based on classUS797082031. M�rz 200828. Juni 2011Amazon Technologies, Inc.Locality based content distributionUS799191017. Nov. 20082. Aug. 2011Amazon Technologies, Inc.Updating routing information based on client locationUS802809128. Juni 200227. Sept. 2011At&T Intellectual Property I. L.P.System and method for reducing DNS lookup traffic in a computer data networkUS821452415. Mai 20083. Juli 2012Hostway CorporationSystem and method for selecting an optimal authoritative name serverUS831519823. Mai 200720. Nov. 2012Accenture Global Services LimitedMobile provisioning tool systemUS200700113265. Juli 200611. Jan. 2007Brother Kogyo Kabushiki KaishaInformation processing device and programUS2009016466115. Mai 200825. Juni 2009Hostway CorporationSystem and method for selecting an optimal authoritive name serverWO2005034408A21. Okt. 200414. Apr. 2005Board Of Regents Of The University Of Texas SystemWireless network system and methodWO2010025670A12. Sept. 200911. M�rz 2010Huawei Device Co., Ltd.Address reporting method and apparatus, connection establishing method and apparatus, and communication systemDrehenOriginalbildGoogle-Startseite - Sitemap - USPTO-Bulk-Downloads - Datenschutzerkl�rung - Nutzungsbedingungen - �ber Google Patente - Feedback gebenDaten bereitgestellt von IFI CLAIMS Patent Services.© 2012 Google