Systems and methods for efficiently using network bandwidth to download resources

In an exemplary method, a computer system within a subnet of a computer network sends a discovery request to other computer systems within the subnet. The discovery request comprises a request for a resource. The computer system downloads an available portion of the resource from the other computer systems in the subnet. If there is a remaining portion of the resource that is not available from the other computer systems in the subnet but that is available from a remote source, and if there is at least one other computer system in the subnet that is also seeking to obtain the remaining portion of the resource, the computer system negotiates with the at least one other computer system about downloading the remaining portion of the resource from the remote source. If no other computers in the subnet require the resource, then the remaining portion of the resource may be downloaded directly from the remote source.

TECHNICAL FIELD

The present invention relates generally to computers and computer-related technology. More specifically, the present invention relates to systems and methods for subnet aware downloading of resources.

BACKGROUND

Computer and communication technologies continue to advance at a rapid pace. Indeed, computer and communication technologies are involved in many aspects of a person's day. Computers commonly used include everything from hand-held computing devices to large multi-processor computer systems.

Computers are used in almost all aspects of business, industry and academic endeavors. More and more homes are using computers as well. The pervasiveness of computers has been accelerated by the increased use of computer networks, including the Internet. Most companies have one or more computer networks and also make extensive use of the Internet. The productivity of employees often requires human and computer interaction. Improvements in computers and software have been a force for bringing about great increases in business and industrial productivity.

Maintaining and supporting computer systems is important to anyone who relies on computers. Whether a computer or computing device is in a home or at a business, at least some maintenance and/or support is often needed. For example, sometimes there are problems with computer hardware. In addition, computer hardware is often upgraded and replaced with new components. Similarly computer software is also frequently upgraded or replaced. New computer hardware and software is continually being integrated into systems across the world.

Installing new computer hardware and/or software, or fixing problems with existing systems, may cause down-time during which the business or individual operates at a diminished level. Most individuals and businesses try to minimize computer problems so as to avoid down-time.

When a business or individual is trying to decide whether to make a change to a computer system, the concern about down-time may outweigh the benefit of the installation or change in influencing the decision. An important concern regarding down-time is the ability to access wide area networks (WAN). The impact that installations will have on WAN links is a important consideration. The professional computer service industry which carries out and supports installations and upgrades has been rapidly expanding. However, even with such computer professional support, the threat of such down-time coupled with the costs of such professional services is a concern.

As corporate performance and end-user productivity have become increasingly dependent on computers, computer support personnel are continuously under pressure to accomplish more with existing or reduced staff head counts. They are also under pressure to perform tasks as efficiently as possible which may include minimizing effects to existing computer systems and networks.

As shown from the above discussion, there is a need for systems and methods that will improve the ability to manage and support computer systems. Improved systems and methods may enable a person performing computer support to work more efficiently and accomplish more in less time. Benefits may be realized by providing increased functionality to assist in computer maintenance and support.

DETAILED DESCRIPTION

Embodiments disclosed herein relate to systems and methods for efficiently using network bandwidth to download resources. In an exemplary method, a computer system sends a discovery request to other computer systems within a selected segment of a computer network. The term “segment,” as used herein, may refer to a subnet, a multicast alias domain, etc. The discovery request includes a request for one or more resources. It may occur that all of the desired resource(s) are available from the other computer systems in the selected network segment. Alternatively, none of the desired resource(s) may be available from the other computer systems in the selected network segment. Alternatively still, only some of the desired resource(s) may be available from the other computer systems in the selected network segment. The computer system downloads whatever portions of the desired resource(s) that are available from the other computer systems in the selected network segment.

The remaining portion of the desired resource(s) (i.e., the portion of the desired resource(s) that is not available from the other computer systems in the selected network segment) may be available from a remote source. A remote source may be any computer system that is located somewhere other than on the local network segment. If the remaining portion is available from a remote source, and if there is at least one other computer system in the selected network segment that is also seeking to obtain the remaining portion of the desired resource(s), then the computer system negotiates with the at least one other computer system(s) in the selected network segment about downloading the remaining portion of the desired resource(s) from the remote source.

Various embodiments of the invention are now described with reference to the Figures, where like reference numbers indicate identical or functionally similar elements. The embodiments of the present invention, as generally described and illustrated in the Figures herein, could be arranged and designed in a wide variety of different configurations. Thus, the following more detailed description of several exemplary embodiments of the present invention, as represented in the Figures, is not intended to limit the scope of the invention, as claimed, but is merely representative of the embodiments of the invention.

Many features of the embodiments disclosed herein may be implemented as computer software, electronic hardware, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various components will be described generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present invention.

Where the described functionality is implemented as computer software, such software may include any type of computer instruction or computer executable code located within a memory device and/or transmitted as electronic signals over a system bus or network. Software that implements the functionality associated with components described herein may comprise a single instruction, or many instructions, and may be distributed over several different code segments, among different programs, and across several memory devices.

FIG. 1illustrates an exemplary system100in which some embodiments may be practiced. An administrative computer system102is connected to a computer network104, such as a corporate local area network (LAN). The administrative system102is used to manage other computer systems that are also connected to the computer network104. These other computer systems will be referred to herein as “managed nodes.” For simplicity, only a single managed node106is shown in the system100ofFIG. 1. Of course, the systems in which embodiments disclosed herein are practiced may include many additional managed nodes.

The administrative system102includes a management server108. The management server108includes a database110of information. The management server108also includes various other components112that are configured to perform tasks such as scheduling, handling alerts, and so forth. An example of a management server that may be used with embodiments disclosed herein is the core server for the LANDesk® Management Suite.

The administrative system102also includes a management application114. The management application114may be used to perform various tasks related to the management of the computer network104, such as remote control, software distribution, software license monitoring, operating system imaging and migration, IT asset management, problem resolution, and so forth. As part of performing these tasks, the management application114may connect to the management server108and query the management server108for information. An example of a management application114that may be used is the console application for the LANDesk® Management Suite. Although a management server108is shown in the embodiment depicted inFIG. 1, not all embodiments require a management server108.

To enable a user of the administrative system102to perform management tasks via the management application114, the managed node106includes a management agent116. The management agent116performs management-related tasks in response to requests from the management application114. An example of a management agent116that may be used is the LANDesk® Management Agent.

FIG. 2illustrates a computer network on which the present systems and methods may be implemented. InFIG. 2, an administrative system201connects to a router203. The router203is connected to three switches: a first switch205, a second switch207and a third switch209. Each switch205,207,209connects to three subnets. The first switch205connects to three subnets: subnet A210, subnet B212, and subnet C214. The second switch207connects to three subnets: subnet D216, subnet E218, and subnet F220. The third switch209connects to three subnets: subnet G222, subnet H224, and subnet1226. Each subnet includes one or more managed nodes. The managed nodes211,213,215,217,219,221,223,225and227represent computer systems or devices on the computer network.

FIG. 3illustrates the operation of the managed nodes306in a network segment, such as a subnet318, according to an embodiment. In the illustrated embodiment, the subnet318includes five managed nodes: managed node A306a, managed node B306b, managed node C306c, managed node D306d, and managed node E306e.

At some point, managed node A306aattempts to obtain a resource that it does not have. A “resource” refers to software or data that may be used by a computer program. Some examples of resources include a file, an executable program, dynamic web content such as a response from a CGI or ISAPI application, etc. In order to obtain the desired resource, managed node A306asends a discovery request320to the other managed nodes306in the local subnet318, i.e., managed node B306b, managed node C306c, managed node D306d, and managed node E306e.

FIG. 4illustrates an exemplary discovery request420that may be used. The discovery request420includes a node identifier422. The node identifier422identifies the managed node306that is sending the discovery request420(which is managed node A306ain the example shown inFIG. 3).

The discovery request420also includes a resource identifier424. The resource identifier424identifies a resource that the managed node306is seeking to obtain. Some examples of resource identifiers424that may be used include a file name, a file path, a file size, a file date (e.g., the date on which the file was last updated), a Cyclic Redundancy Checking (CRC) value, a hash value, a Uniform Resource Locator (URL) address, a Universal Naming Convention (UNC) path, an identifier from a database for separate list of files, etc. The request420may include one or more identifiers for the resource. In this example the discovery request420is for a single resource. An alternate embodiment would be to include multiple resource identifiers in a single discovery request. For example, the discovery request may include requests for resource A, resource B, and resource C.

FIG. 5illustrates an example showing how the other managed nodes506in the subnet518may respond to a discovery request320sent from managed node A506a. In the illustrated example, managed node B506bhas the desired resource526. Managed node C506c, managed node D506d, and managed node E506edo not have the desired resource526.

In response to receiving the discovery request320, managed node B506bsends a reply528to managed node A506a. The reply528indicates that managed node B506bhas the resource526and is capable of transmitting the resource526to managed node A506a. Managed node C506c, managed node D506d, and managed node E506edo not reply to the discovery request320.

In response to receiving the reply528from managed node B506b, managed node A506asends a request530to managed node B506bto download the resource526. In response to the download request530, managed node B506btransmits the resource526to managed node A506a.

FIG. 6illustrates another example showing how the other managed nodes606in the subnet618may respond to a discovery request620sent from managed node A606a. In the illustrated example, none of the other managed nodes606in the subnet618(i.e., managed node B606b, managed node C606c, managed node D606d, and managed node E606e) have the desired resource626. Consequently, none of the managed nodes606in the subnet618reply to the discovery request620sent by managed node A606a.

After waiting for a certain period of time without receiving a response, managed node A606aresends the discovery request620. Managed node A606acontinues to do this until it has sent the discovery request620N times without receiving a reply (where N may be any positive integer). The value of N may be specified in a configuration file or the like. Once the discovery request620has been sent N times without receiving a reply, then managed node A606aattempts to download the resource626from a remote source632. The remote source632may be any computer system that is located somewhere other than on the local network segment (i.e., the subnet618in the illustrated embodiment).

FIG. 7illustrates another example showing how the other managed nodes706in the subnet718may respond to a discovery request320(not shown inFIG. 7) sent from managed node A706a. In the illustrated example, managed node C706c, managed node D706d, and managed node E706edo not have the desired resource726. These managed nodes706do not reply to the discovery request320sent by managed node A706a.

Managed node B706bdoes not have the entire resource726when it receives the discovery request320from managed node A706a. However, managed node B706bis in the process of downloading the resource726from a remote source732when it receives the discovery request320from managed node A706a. (The resource726on managed node B706bis shown in dotted lines to indicate that managed node B706bis downloading the resource726, but does not have the entire resource726yet.)

Managed node B706bsends a reply728to the discovery request320to managed node A706a. The reply728indicates that managed node B706bis downloading the resource726from the remote source732.

In response to receiving the reply728from managed node B706b, managed node A706asends a request730to managed node B706bto download the resource726. In response to the download request730, managed node B706btransmits the resource726to managed node A706a. Managed node B706bmay begin transmitting the resource726to managed node A706awhile it is still downloading the resource726from the remote source732. Alternatively, managed node B706bmay wait until it has finished downloading the resource726from the remote source732before it begins transmitting the resource726to managed node A706a.

FIG. 8illustrates another example showing how the other managed nodes806in the subnet818may respond to a discovery request320(not shown inFIG. 8) sent from managed node A806a. In the illustrated example, none of the managed nodes806in the subnet818(i.e., managed node B806b, managed node C806c, managed node D806d, and managed node E806e) have the desired resource826. However, managed node B806bis seeking to obtain the same resource826as managed node A806a. Managed node B806bsends a reply828to the discovery request320to managed node A806a. The reply828indicates that managed node B806bis looking for the resource826that was requested by managed node A806a. Managed node C806c, managed node D806d, and managed node E806edo not reply to the discovery request320.

Managed node A806aand managed node B806bnegotiate with one another to determine which of them will download the resource826from a remote source832. This may involve managed node A806aand managed node B806bexchanging one or more negotiation messages834.

There are a variety of different ways that managed node A806aand managed node B806bmay determine which of them is going to download a resource826from the remote source832. For example, the managed node806with the lowest IP address may be selected to download the resource826.

In the illustrated example, managed node A806ais selected to download the resource826from the remote source832. Accordingly, managed node A806adownloads the resource826from the remote source832. Managed node B806bdoes not download the resource826from the remote source832.

Managed node A806atransmits the resource826to managed node B806b. Managed node A806amay begin transmitting the resource826to managed node B806bwhile managed node A806ais still downloading the resource826from the remote source832. Alternatively, managed node A806amay wait until it has finished downloading the resource826from the remote source832before it begins transmitting the resource826to managed node B806b.

FIGS. 9A-9Billustrate another example showing how the other managed nodes906in the subnet918may respond to a discovery request320(not shown inFIGS. 9A-9B) sent from managed node A906a. As shown inFIG. 9A, managed node B906b, managed node C906c, managed node D906d, and managed node E906edo not have the resource926. Consequently, they do not reply to the discovery request320sent by managed node A906a.

Managed node E906ehas the desired resource. However, when managed node A906asends the discovery request320, managed node E906eis offline. Consequently, managed node E906edoes not reply to the discovery request320sent by managed node A906a.

Managed node A906aperiodically resends the discovery request320until it has been sent N times, as discussed above in connection withFIG. 6. Managed node E906eremains offline during this time. As a result, managed node E906edoes not reply to the discovery request320sent by managed node A906a. Because managed node A906ahas sent the discovery request320N times without receiving a reply, managed node A906abegins downloading the resource926from a remote source932.

As shown inFIG. 9B, while managed node A906ais downloading the resource926from the remote source932, managed node E906ecomes online. While downloading, managed node A906acontinues to send out messages indicating that it is downloading from the remote source932. When managed node E906ecomes online it sees the messages from managed node A906aand responds to the message indicating that it has the resource926that managed node A906ais downloading. When managed node A906areceives the response from managed node E906eit becomes aware that managed node E906ehas the desired resource926. In response, managed node A906adiscontinues downloading the resource926from the remote source932. Managed node A906asends a request930to managed node E906eto download the resource926. In response to the download request930, managed node E906etransmits the resource926to managed node A906a.

FIG. 10illustrates another example showing how the other managed nodes1006in the subnet1018may respond to a discovery request320(not shown inFIG. 10) sent from managed node A1006a. In the illustrated example, the resource1026includes part A1026a, part B1026b, and part C1026c. Managed node D1006dand managed node E1006edo not have any part of the resource1026. Consequently, they do not reply to the discovery request320sent by managed node A1006a.

Neither managed node B1006bnor managed node C1006chas the entire resource1026. However, both managed node B1006band managed node C1006chave part of the resource1026. Managed node B1006bhas part A1026aof the resource. Managed node C1006chas part B1026bof the resource. The entire resource1026is available from a remote source1032.

Managed node B1006band managed node C1006cboth reply to the discovery request320. In the reply (not shown) sent from managed node B1006b, managed node B1006bnotifies managed node A1006athat part A1026aof the resource is available from managed node B1006b. In response, managed node A1006adownloads part A1026aof the resource from managed node B1006b. In the reply (not shown) sent from managed node C1006c, managed node C1006cnotifies managed node A1006athat part B1026bof the resource is available from managed node C1006c. In response, managed node A1006adownloads part B1026bof the resource from managed node C1006c.

Part C1026cof the resource is not available from any of the other managed nodes1006in the subnet1018. As a result, managed node A1006adownloads part C1026cof the resource from the remote source1032.

FIG. 11illustrates another exemplary discovery request1120that may be sent by a managed node306(such as managed node A306ain the examples described herein) to the other managed nodes306in the subnet318. As before, the discovery request1120includes a node identifier1122. The node identifier1122identifies the managed node306that is sending the discovery request1120.

The discovery request1120also includes multiple resource identifiers1124. In particular, the discovery request1120includes an identifier1124afor resource A, an identifier1124bfor resource B, and an identifier1124cfor resource C. Each resource identifier1124identifies a resource326that the managed node306is seeking to obtain. Although the example inFIG. 11shows three resource identifiers1124a-cin the request1120, this is only done for the purpose of illustration. Any number of resource identifiers1124may be included in the discovery request.

FIG. 12illustrates an example showing how the other managed nodes1206in the subnet1218may respond to managed node A1206asending the discovery request1120shown inFIG. 11. Managed node E1206edoes not have resource A1226a, resource B1226b, or resource C1226c. Consequently, managed node E1206edoes not reply to the discovery request1120.

Managed node B1206bincludes resource A1226a. Managed node C1206cincludes resource B1226b. Managed node D1206dincludes resource C1226c. Managed node B1206b, managed node C1206c, and managed node D1206deach reply to the discovery request1120. In the reply (not shown) sent from managed node B1206b, managed node B1206bnotifies managed node A1206athat resource A1226ais available from managed node B1206b. In response, managed node A1206adownloads resource A1226afrom managed node B1206b. In the reply (not shown) sent from managed node C1206c, managed node C1206cnotifies managed node A1206athat resource B1226bis available from managed node C1206c. In response, managed node A1206adownloads resource B1226bfrom managed node C1206c. In the reply (not shown) sent from managed node D1206d, managed node D1206dnotifies managed node A1206athat resource C1226cis available from managed node D1206d. In response, managed node A1206adownloads resource C1226cfrom managed node D1206d.

FIG. 13illustrates a method1300which illustrates the operation of a managed node306within a subnet318according to an embodiment. In accordance with the method1300, the managed node306sends1302a discovery request320to other managed nodes306within the subnet318.

The managed node306downloads1304an available portion of the resource526from the other managed nodes306in the subnet318. The term “available portion” refers to whatever part of the resource526is available from the other managed nodes306in the subnet318, which may be the entire resource526(as shown inFIG. 5), part of the resource526(as shown inFIG. 10), or none of the resource526(as shown inFIG. 6). The managed node306may download the available portion of the resource526from a single managed node306(as shown inFIG. 5), or from multiple managed nodes306(as shown inFIG. 10).

If the managed node306is able to obtain1306the entire resource526from the managed nodes306within the subnet318, then the method1300ends. However, if the managed node306is not able to obtain1306the entire resource526from the managed nodes306within the subnet318, and if there is1308at least one other managed node306that is seeking to obtain the same resource526, then the managed node306negotiates1310with the other managed node(s)306about downloading the remaining portion of the resource526from a remote source632. The term “remaining portion” refers to whatever part of the resource526is not available from the other managed nodes306in the subnet318, which may be the entire resource526(as shown inFIG. 6) or part of the resource526(as shown inFIG. 10). The negotiations result in one of the managed nodes306being selected to download the remaining portion of the resource526from the remote source632. However, if the managed node306is the only managed node306that is seeking to obtain the remaining portion of the resource526, then the managed node306downloads1312the remaining portion of the resource526from the remote source632.

The network segment that has been utilized in the embodiments described above has been a subnet. However, embodiments are not limited in this regard. For example, in some alternative embodiments, the methods disclosed herein may be practiced by the computer systems within a multicast alias domain. A multicast alias domain consists of all computers that can see each other's multicast traffic without crossing a router.

Various communication technologies may be used in embodiments disclosed herein. For example, multicast technology may be used to reach all machines with a multicast alias domain. Additional details about multicast domains are disclosed in U.S. Published Patent Application No. 2003/0039215, titled “Method and Apparatus for Dynamically Discovering Multicast Alias Domains,” with inventors David A. Eatough and Gregory P. Olsen. This patent application is hereby incorporated by reference in its entirety. Additional details about how multicast technology may be used to download files from within the same subnet are disclosed in U.S. Published Patent Application No. 2003/0187931, titled “Facilitating Resource Access Using Prioritized Multicast Responses To A Discovery Request,” with inventors Gregory P. Olsen and David A. Eatough, and U.S. Published Patent Application No. 2002/0110084, titled “Application Based Bandwidth Limiting Proxies,” with inventors Alan B. Butt, David A. Eatough, and Tony N. Sarra. Both of these patent applications are hereby incorporated by reference in their entirety. Other communication technologies, such as broadcasts, may also be used. The discovery request could also be sent to all machines in the network using a point to point protocol.

Embodiments disclosed herein have been described in terms of managed nodes on a computer network. However, embodiments are not limited in this regard. In fact, embodiments may be practiced in any computer network that comprises a plurality of interconnected computer systems.

FIG. 14is a block diagram illustrating the major hardware components typically utilized in a computer system1401. The illustrated components may be located within the same physical structure or in separate housings or structures.

The computer system1401includes a processor1403and memory1405. The processor1403controls the operation of the computer system1401and may be embodied as a microprocessor, a microcontroller, a digital signal processor (DSP) or other device known in the art. The processor1403typically performs logical and arithmetic operations based on program instructions stored within the memory1405.

As used herein, the term memory1405is broadly defined as any electronic component capable of storing electronic information, and may be embodied as read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices in RAM, on-board memory included with the processor1403, EPROM memory, EEPROM memory, registers, etc. The memory1405typically stores program instructions and other types of data. The program instructions may be executed by the processor1403to implement some or all of the methods disclosed herein.

The computer system1401typically also includes one or more communication interfaces1407for communicating with other electronic devices. The communication interfaces1407may be based on wired communication technology, wireless communication technology, or both. Examples of different types of communication interfaces1407include a serial port, a parallel port, a Universal Serial Bus (USB), an Ethernet adapter, an IEEE 1394 bus interface, a small computer system interface (SCSI) bus interface, an infrared (IR) communication port, a Bluetooth wireless communication adapter, and so forth.

The computer system1401typically also includes one or more input devices1409and one or more output devices1411. Examples of different kinds of input devices1409include a keyboard, mouse, microphone, remote control device, button, joystick, trackball, touchpad, lightpen, etc. Examples of different kinds of output devices1411include a speaker, printer, etc. One specific type of output device which is typically included in a computer system is a display device1413. Display devices1413used with embodiments disclosed herein may utilize any suitable image projection technology, such as a cathode ray tube (CRT), liquid crystal display (LCD), light-emitting diode (LED), gas plasma, electroluminescence, or the like. A display controller1415may also be provided, for converting data stored in the memory1405into text, graphics, and/or moving images (as appropriate) shown on the display device1413.

Of course,FIG. 14illustrates only one possible configuration of a computer system1401. Various other architectures and components may be utilized.