Method and system for discovery via tribal knowledge

The invention provides one or more modules that may be used to automatically configure a computing device to communicate over a network. When a polling computer is connected to a network, it monitors network traffic to determine the protocols being used on the network. These protocols are then installed and loaded onto the polling computer. The polling computer may find voting computers on the network and send queries to the voting computers to discover network information such as network settings and network resources. The polling computer stores the results in a data structure, which may be sorted and is searchable to find the most popular network settings and resources used on the network. Network settings and resources may be automatically applied to the polling computer or the user may be provided with a user interface allowing the user to select particular settings and/or resources.

FIELD OF THE INVENTION

This invention pertains to configuring a computing device for operation on a network, and more particularly for automatic configuration of a computing device and automatic discovery of network resources.

BACKGROUND OF THE INVENTION

Connecting a computing device, such as a personal computer, to a network can be time consuming and difficult. Network settings, such as network protocols, IP subnets, gateways, subnet masks, etc., are not readily apparent or easy to obtain for a typical user. This type of configuration information is usually controlled by a network administrator, service provider, or other network support staff. Users that want to join a network must rely on others to provide them with the settings needed to connect to the network. This wastes the time of both the user and the person providing the information to the user. Even when the user has finally obtained the settings needed to connect to the network, actually applying these settings can be confusing and difficult for many users. Attempting to apply these settings can lead to additional wasted time and frustration on the part of the user and anyone attempting to help the user connect to the network. Thus, there is currently no easy way for a user to connect to a network without significant interaction by the user and/or others.

Similarly, other useful network information is typically only available by word of mouth or independent discovery by a user. Information such as popular and useful websites, important public file servers, peer networks, and other types of shared internet resources must be discovered by a user in order for the user to even know that these resources exist, much less be able to connect and utilize them. Many times, a user may not ever discover these types of resources, despite the usefulness of these resources and their potential to increase the user's productivity. There is, therefore, currently no easy way for a user to find network resources because a user must either ask another person for this type of information (assuming the person they ask is even aware of a given resource) or spend a significant amount of time independently searching for these types of resources on their own. Clearly, neither of these approaches are efficient and both can be prohibitively difficult for a novice computer user.

BRIEF SUMMARY OF THE INVENTION

The invention provides a way for a computing device to automatically configure itself to communicate on a network without requiring user interaction. In summary, when a new computer (polling computer) is added to a network, the polling computer finds out which network configuration settings and resources are most commonly used amongst other computers (voting computers) on the network. The polling computer then selects these settings and resources as defaults to enable the polling computer to communicate over the network and find network resources without requiring user interaction.

More specifically, embodiments of the invention provide one or more modules that may be used to automatically configure a computer to communicate over a network. When the polling computer is connected to a network, it monitors network traffic to determine the protocols being used on the network. These protocols are then installed and loaded onto the polling computer. The polling computer can find voting computers on the network and send queries to the voting computers to discover network information such as network settings and network resources. The polling computer stores the results in a data structure, which may be sorted and is searchable to find the most popular network settings and resources used on the network. Settings and resources may be automatically configured to operate on the polling computer or the user may be provided with a user interface allowing the user to select particular settings and/or resources.

These and other advantages of the invention, as well as additional inventive features, will be apparent upon reading the following detailed description and upon reference to the drawings.

DETAILED DESCRIPTION OF THE INVENTION

Turning to the drawings, there is shown inFIG. 1a computing device100. In its most basic configuration, device100typically includes a processing unit102and memory104. Depending on the exact configuration and type of computing device, memory104may be volatile (such as RAM), non-volatile (such as ROM, flash memory, etc.) or some combination of the two. Additionally, device100may also have mass storage (removable108and/or non-removable110) such as magnetic or optical disks or tape. Similarly, device100may also have input devices114such as a keyboard, mouse, touchpad, and touch screen and/or output devices116such as a display. Other aspects of device100may include communication/network connections112to other devices, computers, networks, servers, etc. using either wired or wireless media. All these devices are well know in the art and need not be discussed at length here.

For simplicity, embodiments of the invention may be described generally as applied to a computer. One of ordinary skill in the art, however, would recognize that aspects of the invention are applicable to any suitable computing device100. For example, embodiments of the invention may be applied to, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.

The invention provides a way for a user to easily configure a computing device100to communicate over a network. Once a computing device100has been connected to a network220(either wirelessly or via a traditional communications cable), the invention may first ascertain which protocols are being used in network communications. The invention can automatically, without any user interaction, install and load the drivers and any other necessary files in order for the computing device100to communicate using the discovered protocols. This aspect of the invention can be controlled by the protocol discovery component202shown inFIG. 2.

Another aspect of the invention includes polling other computing devices100on the network220to find out which network settings and network resources they are using. This information is used by the polling computing device (i.e., the device being configured to communicate over the network) to decide which network settings and/or network resources the polling computing device will use. This is accomplished via the network settings component204and/or the network resource component206. Although these two components are described as separate components, they may operate as a single component. Furthermore, the network settings component204and the network resource component206may individually or in combination be generally described as network information components.

Components of the invention are generally described as being components of a “tribal knowledge” module200. This is a term of art that is used because the computing device100configures itself to communicate on a network and automatically discovers resources on a network by “listening” to and “polling” other computing devices on a network (i.e., tribal members). The computing device100that is attempting to communicate on the network may be described as the polling computing device because it sends requests to tribal members for network information. Tribal members vote by providing a response to this request and thus may be referred to as voting computing devices. By providing these responses to the polling computing device, “tribal knowledge” is acquired about other computing devices on the network. In certain embodiments, the most popular settings and resources used by voting computing devices are chosen as default settings and installed on the polling computing device. Therefore, in certain embodiments, tribal members vote by providing responses to requests for information by the polling computer, and this information is used to determine the default settings and resources for a polling computing device attempting to join the tribe/network.

FIG. 2shows an example of a “tribal knowledge” module200in accordance with teachings of the invention. The tribal knowledge module200comprises a set of computer executable instructions for automatically configuring a computer to communicate over a network220. The tribal knowledge module200may comprise at least one of the following, a protocol discovery component202, a network settings component204, a network resource component206, and an information query component208. The protocol discovery component202can comprise a network probe210that monitors transmissions on a network220to determine protocols being used on the network220. Alternatively, the network probe210can be an independent component that supplies protocol information to the protocol discovery component202. In certain Microsoft “WINDOWS” based embodiments, the protocol discovery component202uses an application such as Microsoft's “NETWORK MONITOR” to monitor the network. “NETWORK MONITOR” allows a network administrator to detect and troubleshoot network problems by monitoring network transmissions. This program is not used for network configuration, but it may be adapted for use in conjunction with the tribal knowledge module200to detect and supply protocol information to the protocol discovery component202. The protocol discovery component202uses the protocol information to install and/or load the proper protocol drivers onto a computer.

The information query component208sends queries to other computers (voting computers) on the network220requesting information about the voting computers. This component of the tribal knowledge module200also receives responses to the queries from the voting computers and stores this information in one or more data structures212. The network settings component204uses the data structure212to select and apply network settings to the computer. Similarly, the network resource component206uses the data structure212to select and apply resources on the computer. Both the network settings component204and the network resource component206may initiate and control the information query component208. Although each of the components are shown and described as part of a single tribal knowledge module200, any one or more of the components may instead be an independent module.

There is shown inFIG. 3, a simplified diagram of network communication layers for a computing device in certain embodiments of the invention. The computing device comprises an Ethernet card300, a network device interface driver302, and a TCP/IP driver304, for example. Currently, the Microsoft “WINDOWS XP” operating system has the TCP/IP driver304preloaded as a default, so there is no need to install the TCP/IP protocol on computers running this operating system. In a Microsoft “WINDOWS” based operating system, the “NETWORK MONITOR” driver306or other suitable driver interacts with the network device interface driver302and the network probe210. The network probe210monitors traffic on the network220and supplies protocol information to the network manager308. The network manager308can be used to load protocol drivers for protocols detected on the network220that have not already been loaded on the computing device. The protocol discovery component202may facilitate the interaction between the network probe210and the network manager308, and as described above, the monitoring aspect and/or network probe may be built into the protocol discovery component202. Although this example has been explained with respect to certain Microsoft “WINDOWS” based operating systems, one of ordinary skill in the art would appreciate that the invention may be applied to any suitable operating system.

Embodiments of the invention provide a way for a user to easily configure a computer to communicate on a network220by automatically determining network settings and resources on the network. Before a computer can determine which network settings and resources are being used by other computers on a network220, the computer needs to be configured to communicate with a protocol that other computers on the network are using. The process of discovering and applying a network protocol is shown inFIG. 4. Turning to this figure, a user begins by establishing a connection between a computer and a network220in step402. When connected, the computer begins monitoring transmissions on the network in step404. The type of protocol being used in a given transmission is determined in step406. This process may begin automatically once the computer recognizes that it is connected to a network, or it may be initiated by the user.

As the computer determines a particular protocol that is being used in transmissions, the protocol discovery module202facilitates the installation (if necessary) and loading of the required driver(s) for this protocol in step408(assuming that they have not already been loaded on the computer). The protocol may be automatically loaded by the computer, or the user may be prompted by a user interface (such as a dialog box) to select whether they want to install the drivers for a particular protocol. Examples of network protocols that may be discovered include but are not limited TCP/IP, AppleTalk, Netware, and asynchronous transfer mode (ATM).

By way of example and not limitation, a user may establish a wireless connection between the user's computer and a network220that the user would like to join. Once the computer detects that a new network is connected, or at the direction of the user, the protocol discovery component202may begin listening to transmissions on the network (i.e., using a network probe210). When a protocol has been discovered, the protocol discovery component202can determine if the required drivers are already installed for the particular protocol. If the drivers have not been installed, then the protocol discovery component202may facilitate the installation of the protocol driver and load the protocol driver. As mentioned above, in certain embodiments this process of loading the protocol drivers may be accomplished using the network manager308. The user's computer may now send and receive network communications using this protocol, and the protocol discovery component202can then repeat this process to find any additional protocols used on the network. Therefore, the process described inFIG. 4is useful for discovering and using protocols that have not already been installed and loaded on a computer.

Once the computer has loaded a given protocol, the computer can discover other computers on the network through queries sent by the information query component208. This may be accomplished, for example, by sending out broadcasts over the network requesting other computers on the network to respond, or if the user knows of a specific computer on the network, the user may manually provide this information to the information query component208. Alternatively, the computer may listen for other computers that have sent broadcasts over the network. One of ordinary skill in the art would recognize that any suitable method of finding other computers on the network may be used.

In accordance with the invention, the computer (polling computer) may discover network information used by other computers (voting computers) on the network. This network information may include information about network configuration settings/options and network resources. This type of information is typically only available through word of mouth or a user's own discovery. Thus, user interaction is normally required to both discover a given setting or resource and to configure the computer to use the setting or access the resource. By way of example and not limitation, some of the network settings/options that the computer may discover include information regarding IP subnets, subnet masks, gateways, DNS servers, WINS servers, email servers, ATM addresses, domain controllers, preferred domain names, workgroups, etc. Examples of network resources or other information that may be discovered include websites, printers, public file shares, source code control servers, internet proxy addresses, peer networks, telnet servers, FTP servers, file sharepoints, installed applications software, installed device drivers (download source and current version), installed security patches, operating system version (and latest patches), network attached devices (e.g., universal plug and play devices, etc.), local hardware peripherals (e.g., graphics cards, sound cards, multimedia devices, etc.), IRC chat channels, etc. The resource name, resource internet protocol (IP) address, and/or any other suitable information needed to locate and/or use a given resource may be discovered from a voting computer. One of ordinary skill in the art would recognize that any suitable information about network settings, network resources, or other information about voting computers on a network may be discovered.

A process for discovering network settings and resources can be seen inFIG. 5. The information query component208of the tribal knowledge module200on the polling computer sends a request for configuration and/or resource information to voting computer(s) on the network in step502. This request is received by one or more voting computers on the network220in step504. In response to the request, the voting computer(s) on the network send the requested information back to the polling computer in step506. When the information query component208at the polling computer receives this information in step508, the information can be stored in a data structure212in step510. The process may end at this point and can be repeated to find network information associated with other voting computers.

Following the aforementioned steps, the information in the data structure can be used to configure a computer to use network settings and/or network resources. The data structure212may be accessed in step512to retrieve network information associated with the voting computer(s). This information may then be applied to the polling computer as depicted in step514. Although steps512and514are shown as a potential path following step510within the flow diagram ofFIG. 5, the steps preceding these two steps need not be performed every time the data structure is accessed or network settings/resources are applied to the polling computer. These two steps may be performed completely independent of steps502-510as shown in the figure. For example, a data structure212already containing network information may be copied onto a computing device being configured to communicate on the network220. Steps502-510may not be needed in this situation because network information is already available in the data structure212. As another example, the polling computer may have stopped collecting network information from voting computer(s), but the computer may still access the data structure212at a later point in time to apply additional settings or resources that were not previously applied.

An example of a data structure212is shown inFIG. 6. The data structure212may be a list, table, spreadsheet, database, or other suitable data structure that associates a particular voting computer with fields in the data structure representing settings, preferences, and/or resources of the voting computer. The data structure is populated with one entry, such as entry602, for each voting computer that responds to a request for information. The data structure212may comprise a field604containing an identifier for the voting computer that has provided the information in each entry. The identifier can be the name of the computer for example. One of ordinary skill in the art would recognize that other suitable identifiers can be used to identify the voting computers. This data structure212may have additional fields, such as field606, representing data associated with protocols, addresses, gateways, printers, proxies, email servers, favorite website lists, databases, etc. The name of the resource or setting, address associated with a resource/setting (such as an internet protocol (IP) address), and/or any other suitable information needed to locate and/or use a given resource/setting may be discovered from a voting computer. The data structure212may be sortable within a particular field and a running total of specific entries may be maintained such that the user knows how many times a given value in a field appears in the data structure.

The data structure212is populated by the polling computer for a desired amount of time and/or number of entries. In alternate embodiments, the data structure may be continuously populated or may be periodically populated to reflect any changes in voting computer settings/resources. Once the data structure212is sufficiently populated, default network settings can be chosen based upon which settings appear most frequently, i.e., the most “popular” settings. The reason why the most popular selections are chosen is because it is likely that the network settings used most frequently are the correct or preferred settings for the computer trying to connect to the network220. Similarly, the most commonly used resources are likely resources that the user of the polling computer would like to use or know about. These settings may be applied automatically or they may be presented to the user for approval before they are applied.

To maintain the integrity of the data in the data structure, the tribal knowledge module200may keep track of computers from which it has already polled and received data. Any duplicate data may be discarded, or the list may be updated to reflect any new settings or resources that may have been adopted by the voting computer. Ultimately, the list is maintained such that there are no duplicate entries from the same computer that would skew the data in the data structure212.

Instead of making selections solely based upon frequency of occurrence, entries in the data structure may be weighted based on factors such as proximity of the voting computer with respect to the polling computer or based on the similarities between the voting and polling computers. Therefore, proximity and/or similarity may be taken into account when selecting network settings and/or resources. Proximity may be measured, for example, by how quickly the data arrives from the voting computer or hop counts. Similarities, for example, may be determined by similarity between the polling and voting computer's hardware, software, other system defaults or settings, common memberships in workgroups or domains, and/or email server provided organizational structure data, for example. It may be desirable to weight entries because the settings of certain voting computers may be more relevant to the polling computer than other voting computers that are farther away and/or less similar.

By way of example and not limitation, a weight may be given to a particular default printer based upon the number hops a response took from a voting computer to the polling computer. For this example, assume that the data structure212contains an entry from a first voting computer using printer1that took 10 hops to reach the polling computer, a second entry for a second voting computer using printer1that took 20 hops to reach the polling computer, and a third entry for a third voting computer using printer2that took 5 hops to reach to the polling computer. Instead of using strict popularity/frequency of use and counting each entry as one vote for a particular printer (which would result in the selection of printer1as the default printer on the polling computer), each vote can be weighted by taking the inverse of the number of hops. This results in the first voting computer have a vote of 0.1 ( 1/10) for printer1, the second computer having a vote of 0.05 ( 1/20) for printer1, and the third voting computer having a vote of 0.2 (⅕) for printer2. Adding up the votes for each printer using the weighted votes, printer1has 0.15 votes (i.e., 0.1 from the first voting computer plus 0.05 from the second voting computer) and printer2has 0.2 votes. Therefore, the default selection for the polling computer would be printer2because it has a higher weighted vote total than printer1, even though more computers use printer2. This is just one simple example of the many ways that a weighting calculation can take place. One of ordinary skill in the art would appreciate that any suitable method of weighting data in the data structure212and selecting network information from the data structure212may be used.

Once information from voting computers on the network has been gathered and stored in a data structure212, the most frequently occurring resources may be automatically loaded, selected, saved as preferences, or set as defaults on the polling computer. For example, popular websites may be automatically saved in a folder within the polling computer's internet browser. Alternatively, the data structure212may be presented on a graphical user interface (GUI) to a user. The user may then review not only the most popular resources, but also view other resources being used by other computers on the network. This allows the user to select resources other than the most popular, if desired. For example, in certain situations, a user may not want the most popular resource, such as for a printer, because the user will have to compete with a larger number of users in the printer queue. Thus, the user may decide to select another printer from the data structure212that is not the most popular. Presenting the data structure212to a user also allows a user to decline to apply certain resources that the user is not interested in using.

The information in the database may be presented to the user via a variety of user interfaces. For example, shown inFIG. 13, the user interface may be a dialog box1300presenting a recommended setting to a user. Alternatively, the information may be presented as a list, which may be sortable based on a particular field in the list, or the information may be presented as a two dimensional or three dimensional graph. Other ways of displaying the database in a graphical user interface include showing certain results as objects on the display. The objects on the display may, for example, have varying sizes, apparent distance, color, luminosity, transparency, velocity, varying animations. By way of example and not limitation, if a user is deciding which printer to use, the user may be presented with a display having icons representing different printers, the icons being different sizes on the display to show the relative popularity of each printer. The relative size of the printers indicates to a user which printers are more commonly used than others on the network. More frequently used printers are represented by larger printer icons and less frequently used printers are represented by smaller printer icons. In this way, the user is able to easily determine which printer is best for the user's needs.

The following example further illustrates the invention but, of course, should not be construed as in any way limiting its scope.FIG. 7shows an example of a network700comprising a server702, a hub704, and personal computers (PC's) Alpha706, Beta708, and Omega710. It will be seen inFIG. 8that PC Alpha706and PC Beta708are already communicating over the network using the AppleTalk and TCP/IP protocols, respectively. PC Omega710has recently been connected to the network700and the tribal knowledge module200has been initiated. The protocol discovery component202is being used to listen to network traffic and determine which protocols are being used on the network700. As protocols are discovered, the protocol discovery component202installs and loads the necessary drivers to enable PC Omega710to communicate using these protocols. As shown inFIG. 9, PC Omega710now has the necessary drivers installed to communicate using both AppleTalk and TCP/IP.

Once the protocols have been installed on PC Omega710, this PC queries into the network700to attempt to find other PC's connected to the network700as shown inFIG. 10. Once PC's such as PC Alpha706and Beta708have been discovered, PC Omega710sends queries to the discovered PC's (voting PC's) for information such as network settings and network resources as shown inFIG. 11. The voting PC's706,708respond inFIG. 12with the requested information, which is sent to PC Omega710. As this information is received at PC Omega710, the tribal knowledge module200stores the information in a data structure212, such as a database table. Finally, as shown inFIG. 13, the tribal knowledge module200automatically selects default settings for the user and/or prompts a user to select settings using a user interface element1300, such as a dialog box. These settings may be selected or recommended by the tribal knowledge module200based upon which setting is most “popular.” Popularity, as described above, may be determined by the number of instances that a particular setting appears in the database212. Alternately or in addition, settings and recommendations may be based on a weighting system that takes into account similarity of PC's and/or proximity of the PC's to one another. As shown inFIG. 13, printer2appears most frequently in the data structure212, so the user is prompted by a user interface1300to make this printer the default printer for PC Omega710.

In certain alternate embodiments, a network setting or network resource may be immediately applied to a polling computer or may be presented in a user interface upon receipt of this information from the voting computer. For example, following step508ofFIG. 5, the requested network information may be immediately applied or presented to the user. If the information is presented to the user, then the user may be prompted to make a decision on whether to apply this setting or resource to the polling computer. This can be useful, for example, when a user is setting up a computer to communicate over a network and the user is already aware of another computer that is communicating over the network.

By way of example and not limitation, the user can have the information query component208send a request for information to the other computer that is already configured to communicate on the network. Once this information is received, the network settings and/or resources may be automatically applied to the polling computer, essentially mirroring the settings and/or resources from the voting computer. This can be useful for a person that is attempting to set up multiple new computers at the same time. The user may perform steps502-514on one of the new computers, and the user can have the other computers poll this computer to retrieve the identical setting/resource information. Similarly, a user may be configuring a new computer in his/her home and would like to replicate the setting and/or resources from one of his/her other computers on his/her home network. The user can have the new computer poll and automatically apply the settings/resources of another computer in his/her home network. When a user would like to see a particular setting or resource before it is applied on his/her computer, the setting/resource may be presented in a user interface, such as user interface1300, on the polling computer.

The invention is capable of taking into account the fact that privacy concerns may exist when information about one computer is sent to another. Thus, access to certain settings and resources may be restricted by a user of a voting computer. For example, a user of a voting computer may not want to share all of the websites that they visit. Instead, the user may want to only share those websites in the user's favorite websites folder, or the user may establish a shared website folder where the user may place links to only those websites that the user wants to share. Thus, when a request for information is sent from a polling computer to a voting computer, only those resources and settings that the user of the voting computer wants to share will be sent in the response. Furthermore, a voting computer may be configured to not respond to any requests for information should the user of the voting computer so choose.