Software-based network attached storage (NAS) services are hosted on a massively distributed processing system configured by coupling a multiplicity of distributed devices with a network, wherein each of the distributed devices are enabled to process workloads for the distributed processing system by a client agent program. More particularly, the client agent program is configured with a NAS software component to enable selected distributed devices from the multiplicity of distributed devices to appear to client devices coupled to the network as dedicated NAS devices. The NAS software component allocates an available amount of storage resources in the selected distributed devices to provide NAS services to the client devices. storage priority controls, including user specified constraints, standard bit, block and file priority levels, and direct bit, block or file priority markings may be utilized to facilitate the full use of the available amounts of unused storage in the selected distributed devices.
|
13. A system comprising:
a plurality of distributed devices configured to be coupled to a network, wherein the distributed devices include respective client agents configured to process respective portions of workloads for the distributed processing system, the respective client agents including respective instances of a software-based network attached storage (NAS) component, wherein the NAS component is configured to:
assess unused storage resources of the distributed devices;
allocate respective available amount of unused storage resources in selected distributed devices of the plurality of distributed devices;
represent that the selected distributed devices comprise respective NAS devices having the respective available amounts of storage resources;
process workloads associated with data storage and access by accessing data from and storing data into portions of the storage resources in the selected distributed devices to provide NAS service to a client device: and
wherein the respective client agents are configured to enable at least one of the selected distributed devices to function as a location distributed device to store location information for data stored by the selected distributed devices.
1. A computer-implemented method comprising:
configuring a distributed processing system of a plurality of distributed devices coupled to a network, wherein the plurality of distributed devices include respective client agents configured to process respective portions of a workload for the distributed processing system,
wherein the respective client agents for particular distributed devices of the plurality of distributed devices have corresponding software-based network attached storage (NAS) components configured to assess unused or under-utilized storage resources in selected distributed devices of the plurality of distributed devices;
representing with the corresponding software-based NAS component that the selected distributed devices respectively comprise NAS devices having an available amount of storage resources related to the unused and under-utilized storage resources for the selected distributed devices;
processing one or more of data storage or access workloads for the distributed processing system by accessing data from or storing data to at least a portion of the available amount of storage resources to provide NAS service to a client device coupled to the network; and
enabling at least one of the selected distributed devices to function as a location distributed device to store location information associated with data stored by the selected distributed devices through use of the respective client agents for the particular distributed device.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
8. The method of
9. The method of
10. The method of
11. The method of
12. The method of
14. The system of
15. The system of
16. The system of
17. The system of
18. The system of
19. The system of
20. The system of
21. The system of
22. The system of
23. The system of
24. The system of
|
This application is a continuation-in-part application of the following applications: application Ser. No. 09/538,543 entitled “DISTRIBUTED PARALLEL PROCESSING SYSTEM HAVING CAPABILITY-BASED INCENTIVES AND ASSOCIATED METHOD which is now U.S. Pat. No. 7,003,547,” application Ser. No. 09/539,023 entitled “SWEEPSTAKES INCENTIVE MODEL AND ASSOCIATED SYSTEM which is now abandoned,” application Ser. No. 09/539,448 entitled “CAPABILITY-BASED DISTRIBUTED PARALLEL PROCESING SYSTEM AND ASSOCIATED METHOD which is now abandoned,” application Ser. No. 09/539,428 entitled “METHOD OF MANAGING DISTRIBUTED WORKLOADS AND ASSOCIATED SYSTEM which is now abandoned,” application Ser. No. 09/539,106 entitled “NETWORK SITE TESTING METHOD AND ASSOCIATED SYSTEM which is now U.S. Pat. No. 6,891,802,” application Ser. No. 09/538,542 entitled “NETWORK SITE CONTENT INDEXING METHOD AND ASSOCIATED SYSTEM which is now U.S. Pat. No. 6,654,783,” and application Ser. No. 09/539,107 entitled “DISTRIBUTED BACK-UP SYSTEM AND ASSOCIATED METHOD which is now abandoned,” each of which was filed on Mar. 30, 2000, and each of which is hereby incorporated by reference in its entirety.
This application is also a continuation-in-part application of the following applications: application Ser. No. 09/603,740 entitled “METHOD OF MANAGING WORKLOADS AND ASSOCIATED DISTRIBUTED PROCESSING SYSTEM which is now abandoned,” application Ser. No. 09/602,789 entitled “MACHINE GENERATED SWEEPSTAKES ENTRY MODEL AND ASSOCIATED DISTRIBUTED PROCESSING SYSTEM which is now U.S. Pat. No. 7,020,678,” application Ser. No. 09/602,803 entitled “DATA SHARING AND FILE DISTRIBUTION METHOD AND ASSOCIATED DISTRIBUTED PROCESSING SYSTEM which is now U.S. Pat. No. 7,082,474,” application Ser. No. 09/602,844 entitled “DATA CONVERSION SERVICES AND ASSOCIATED DISTRIBUTED PROCESSING SYSTEM which is now abandoned,” and application Ser. No. 09/602,983 entitled “CUSTOMER SERVICES AND ADVERTISING BASED UPON DEVICE ATTRIBUTES AND ASSOCIATED DISTRIBUTED PROCESSING SYSTEM which is now U.S. Pat. No. 6,963,897,” each of which was filed on Jun. 23, 2000, and each of which is hereby incorporated by reference in its entirety.
This application is also a continuation-in-part application of the following application: application Ser. No. 09/648,832 entitled “SECURITY ARCHITECTURE FOR DISTRIBUTED PROCESSING SYSTEMS AND ASSOCIATED METHOD which is now U.S. Pat. No. 6,847,995,” which was filed on Aug. 25, 2000, and which is hereby incorporated by reference in its entirety.
This application is also a continuation-in-part application of the following application: application Ser. No. 09/794,969 entitled “SYSTEM AND METHOD FOR MONITIZING NETWORK CONNECTED USER BASES UTILIZING DISTRIBUTED PROCESSING SYSTEMS which is now pending,” which was filed on Feb. 27, 2001, and which is hereby incorporated by reference in its entirety.
This invention relates to distributed processing and more particularly to techniques and related methods for managing, facilitating and implementing distributed processing in a network environment.
The NAS (Network Attached Storage) market is currently one of the fastest growing segments of the overall storage market. NAS devices typically take the form of stand-alone devices or systems that contain their own storage, processing, connectivity and management resources. Through these internal capabilities, the NAS device becomes a storage resource that connects to any network enabling many devices on the network to share data via the NAS device.
A NAS device is a term that is often used to refer to a specialized file server that connects to the network to provide storage capacity to network-connected users. NAS devices typically contain a slimmed-down (micro-kernel) operating system and file system. NAS devices often process only input/output (I/O) requests by supporting popular file sharing protocols such as NFS (UNIX) and SMB (DOS/Windows). NAS devices also typically use traditional LAN protocols such as Ethernet and TCP/IP to communicate over the network. Some general-purpose computers using full-blown operating systems such as Windows or UNIX are often labeled as NAS products because they can provide storage that is attached to a network. However, a pure NAS device is one built from scratch as a dedicated file I/O device. As used herein, the term “NAS device” broadly refers to a device that makes data storage resources available to network-connected user devices. A “dedicated NAS device” is a device whose primary operational purpose is for providing NAS services.
A related term is the storage area network (SAN). “SAN” is a term that is often used to refer to a back-end network connecting storage devices to servers via peripheral channels such as SCSI, SSA, ESCON and Fibre Channel. By using a SAN, the data storage traffic is off-loaded from the primary user network, which includes the user machines and the server machines. The servers then utilize the SAN to move and store data in storage devices connected to the storage network. SAN environments are becoming increasingly popular for enterprise storage solutions.
With respect to lower cost devices that are currently marketed as dedicated NAS devices, many have common personal computer (PC) specifications such as the following: Pentium III processor, 40 GB HD and a 10/100 Ethernet connection, along with other components. Considering the specifications of an average corporate desktop computer, the capabilities of these desktop computers often exceed the capabilities computers being sold as dedicated NAS devices, and these desktop computers often sit idle for significant amounts of time each day.
The present invention provides software-based network attached storage (NAS) services that are hosted on a massively distributed computing system. More particularly, a client agent program is configured to run on the network-connected client devices that are part of the distributed computing system to provide what appears to user devices as dedicated NAS functionality, for example, through the Internet. This NAS functionality takes advantage of unused or under-utilized resources of these distributed devices to advantageously provide NAS capabilities. In addition, storage priority controls may be utilized to facilitate the full us of available storage resources, such as user specified constraints, standard bit, block or file priority levels and direct bit, block or file priority markings.
In one embodiment, the present invention is a method of operating a distributed processing system to provide network attached storage (NAS) services, including configuring a client agent program to have a software-based NAS component and to take advantage of unused or under-utilized resources of a plurality of network-connected distributed devices put into operation for purposes distinct from operating the client agent program to provide NAS services, and utilizing the plurality of distributed devices running the client agent to provide NAS services to network-connected user devices with the network-connected user devices recognizing at least a portion of the plurality of distributed devices as dedicated NAS devices. In a more detailed respect, at least a portion of the plurality of network-connected distributed devices may operate only as stand-alone dedicated NAS devices without knowledge of other NAS devices connected to the network. Still further, at least one of the network-connected distributed devices may store location information for data stored by the plurality of network-connected distributed devices. Still further the provided NAS services may be managed utilizing at least one centralized server system. And the server system may download the NAS component to the plurality of network-connected distributed devices with the NAS component being configured to operate as part of the client agent program already installed on the distributed devices. In yet another respect, the method of the present invention may include managing storage resources for the plurality of distributed devices using a storage priority control that facilitates full use of available storage resources. In addition, the storage priority control may include, for example, a parameter selectable through the client device, storage priority level schemes that prioritize data storage and deletion, and priority markings directly given to data or files.
In another embodiment, the present invention is a distributed processing system that provides network attached storage (NAS) services, including a client agent program and a plurality of network-connected distributed devices running the client agent program. The client agent program may be configured to have a software-based NAS component and to take advantage of unused or under-utilized resources of a network-connected distributed device put into operation for purposes distinct from operating the client agent program to provide NAS services. The plurality of network-connected distributed devices may operate to provide NAS services to network-connected user devices with the network-connected user devices recognizing at least a portion of the plurality of distributed devices as dedicated NAS devices. In more detailed respects, at least a portion of the plurality of network-connected distributed devices operate only as stand-alone dedicated NAS devices without knowledge of other NAS devices connected to the network. In addition, at least one of the network-connected distributed devices stores location information for data stored by the plurality of network-connected distributed devices. Still further, at least one centralized server system may be included to manage at least in part the NAS services provided by the plurality of network-connected distributed devices. And the NAS component may be configured to be downloaded from the server system to the plurality of network-connected distributed devices with the NAS component being configured to operate as part of the client agent program already installed on the distributed devices. In yet another embodiment, a storage priority control may be used to manage storage resources for the plurality of distributed devices with the storage priority control configured to facilitates full use of available storage resources.
It is noted that the appended drawings illustrate only exemplary embodiments of the invention and are, therefore, not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
The present invention contemplates the identification of the capabilities of distributed devices connected together through a wide variety of communication systems and networks and the aggregation of these capabilities to accomplish processing, storage, broadcasting or any other desired project objective. For example, distributed devices connected to each other through the Internet, an intranet network, a wireless network, home networks, or any other network may provide any of a number of useful capabilities to third parties once their respective capabilities are identified, organized, and managed for a desired task. These distributed devices may be connected personal computer systems (PCs), internet appliances, notebook computers, servers, storage devices, network attached storage (NAS) devices, wireless devices, hand-held devices, or any other computing device that has useful capabilities and is connected to a network in any manner. The present invention further contemplates providing an incentive, which may be based in part upon capabilities of the distributed devices, to encourage users and owners of the distributed devices to allow the capabilities of the distributed devices to be utilized in the distributed parallel processing system of the present invention.
The number of usable distributed devices contemplated by the present invention is preferably very large. Unlike a small local network environment, for example, as may be used by an Internet Service Provider (ISP), which may include less than 100 interconnected computers systems to perform the tasks required by the ISP, the present invention preferably utilizes a multitude of widely distributed devices to provide a massively distributed processing system. With respect to the present invention, a multitude of distributed devices refers to greater than 1,000 different distributed devices. With respect to the present invention, widely distributed devices refers to a group of interconnected devices of which at least two are physically located at least 100 miles apart. With respect to the present invention, a massively distributed processing system is one that utilizes a multitude of widely distributed devices. The Internet is an example of a interconnected system that includes a multitude of widely distributed devices. An intranet system at a large corporation is an example of an interconnected system that includes a multitude of distributed devices, and if multiple corporate sites are involved, may include a multitude of widely distributed devices. A distributed processing system according to the present invention that utilizes such a multitude of widely distributed devices, as are available on the Internet or in a large corporate intranet, is a massively distributed processing system according to the present invention.
The incentives provided by the incentives block 126 may be any desired incentive. For example, the incentive may be a sweepstakes in which entries are given to client systems 108, 110 . . . 112 that are signed up to be utilized by the distributed processing system 100. Other example incentives are reward systems, such as airline frequent-flyer miles, purchase credits and vouchers, payments of money, monetary prizes, property prizes, free trips, time-share rentals, cruises, connectivity services, free or reduced cost Internet access, domain name hosting, mail accounts, participation in significant research projects, achievement of personal goals, or any other desired incentive or reward.
As indicated above, any number of other systems may also be connected to the network 102. The element 106, therefore, represents any number of a variety of other systems that may be connected to the network 102. The other systems 106 may include ISPs, web servers, university computer systems, and any other distributed device connected to the network 102, for example, personal computer systems (PCs), internet appliances, notebook computers, servers, storage devices, network attached storage (NAS) devices, wireless devices, hand-held devices, or any other connected computing device that has useful capabilities and is connected to a network in any manner. The customer systems 152 represents customers that have projects for the distributed processing system, as further described with respect to
It is noted that the communication links 114, 116, 118, 119, 120 and 122 may allow for communication to occur, if desired, between any of the systems connected to the network 102. For example, client systems 108, 110 . . . 112 may communicate directly with each other in peer-to-peer type communications. It is further noted that the communication links 114, 116, 118, 119, 120 and 122 may be any desired technique for connecting into any portion of the network 102, such as, Ethernet connections, wireless connections, ISDN connections, DSL connections, modem dial-up connections, cable modem connections, fiber optic connections, direct T1 or T3 connections, routers, portal computers, as well as any other network or communication connection. It is also noted that there are any number of possible configurations for the connections for network 102, according to the present invention. The client system 108 may be, for example, an individual personal computer located in someone's home and may be connected to the Internet through an Internet Service Provider (ISP). Client system 108 may also be a personal computer located on an employee's desk at a company that is connected to an intranet through a network router and then connected to the Internet through a second router or portal computer. Client system 108 may further be personal computers connected to a company's intranet, and the server systems 104 may also be connected to that same intranet. In short, a wide variety of network environments are contemplated by the present invention on which a large number of potential client systems are connected.
Client systems 134, as discussed above, may be any number of different systems that are connected to the server systems 104 through a network 102, such as client systems 108, 110 . . . 112 in
It is noted that the workload received by client system 108 and the processing or activity performed may depend up a variety of factors, as discussed further below. In part, this workload allocated by the server system 104 to each client system 108, 110 and 112 may depend upon the capabilities of the client system, such as the processing power, disk storage capacity, communications types, and other capabilities available from the various components of the systems within the client system 108.
The server systems 104 can select the workloads for the client system 108 and may control when these workloads are performed, through operational code (i.e., an agent) residing and installed on the client system 108. Alternatively, the owner or user of the client system 108 may determine when workloads are procured or obtained from the server systems 104, as well as when these workloads are performed, for example, by accessing the server systems 104 through the network 102. For example, the server systems 104 may download to the client system 108 upon request one or more workloads. At the same time, an agent residing on the client system 108 may operate to process the workload or multiple workloads downloaded to the client system 108. It is noted, therefore, that the agent may be simultaneously managing more than one workload for any number of projects. When the workload is complete, the agent may inform the owner or user of the client system 108 the results are ready to be communicated back. The client system 108 may then upload results to the server system 104 and download new workloads, if desired. Alternatively, these logistical and operational interactions may take place automatically through control of the agent and/or the server systems 104.
It is noted, therefore, that the capabilities for client systems 108, 110 . . . 112 may span the entire range of possible computing, processing, storage and other subsystems or devices that are connected to a system connected to the network 102. For example, these subsystems or devices may include: central processing units (CPUs), digital signal processors (DSPs), graphics processing engines (GPEs), hard drives (HDs), memory (MEM), audio subsystems (ASs), communications subsystems (CSs), removable media types (RMs), and other accessories with potentially useful unused capabilities (OAs). In short, for any given computer system connected to a network 102, there exists a variety of capabilities that may be utilized by that system to accomplish its direct tasks. At any given time, however, only a fraction of these capabilities are typically used on the client systems 108, 110 . . . 112. The present invention can take advantage of these unused capabilities.
It is also noted that along with receiving the workload, the client system 108 will also receive an agent that manages the completion of the workload. This agent may be software that is customized for the particular computer system and processing capabilities of the client system 108. For example, if the client system is a personal computer as shown in
The clients system agent 270 may also include a workload engine 274, a statistics/user interface incentive advertising block 276, and a workload package and update processing block 278. In the example shown in
The statistics/user interface/incentive advertising block 276 may provide workload, incentive and other statistics, as well as any other desired interface features, to the user of the client system. For example, the block 276 may show a user the expected amount of processing time it will take for the client system to complete a workload task based upon the capabilities of the system. As also shown, the block 276 may receive information following lines 286 and 284 from the workload package and update processing block 278 and from the workload engine 274. If desired, security information from the security subsystem 272 could also be displayed to the user of the client system. It is noted that the information displayed to the user of the client system may be modified and selected as desired without departing from the present invention.
With respect to incentive advertising, the block 276 may also show the user of the client system how this processing time might change depending upon various possible upgrades to the capabilities of the client system, such as a faster microprocessor, more memory, more disk storage space, etc. Furthermore, the client system capabilities may be shown correlated to the incentives provided to the client system for participation. Thus, the user may be provided information as to how the user's incentives would increase or change depending upon other computer systems or upgraded capabilities the user could acquire. This incentive value increase may also be tied to upgrades to particular vendor's devices. For example, if the user's device is a computer system having an ABC microprocessor, the block 276 may provide the user information as to increased incentive values based upon an upgrade to a more powerful ABC microprocessor. Similarly, if the user's device is a computer system obtained from ABC, the block 276 may provide the user information as to increased incentive values based upon an upgrade to a more powerful ABC computer system.
In
As indicated above, this incentive information may also be tied to the specific vendor of the user's CPU, for example, ABC Company's CPU. Thus, as shown, the key designation 240 (My current processor) and the corresponding bar graph portion 236 represent incentives for the user's current CPU (e.g., a 166 MHz processor). The key designation 238 represents the incentives that the user is projected to have if the user were to upgrade the CPU. Again, this upgrade incentive information may be tied to the specific vendor of the user's CPU or to any other vendor, if desired. Thus, as shown, the key designation 238 (NEW ABC 1 GHz processor!) and the corresponding bar graph portion 234 represent incentives for an upgrade to a new ABC CPU (e.g., a new ABC 1 GHz processor). In this manner, a user may be provided an incentive to increase the capabilities of the distributed device, and a vendor may be provided advertising so that the user is also directed to a particular upgrade.
Looking further to
In addition to these incentive related information tabs, other tabs may be included to provide information and control for any desired features of the agent client manager. For example, the tab 244 (Current: Prime Search) represents information that may be displayed to the user about the current workload being performed by the agent client manager, for example, a search for large prime numbers. The tab 221 (Settings) represents information that may be displayed to the user about various settings for the client agent manager. In particular, the tab 221 may provide the user the ability to control any desired aspect of the operation of the agent client manager. For example, the user may be able to select a portion of the capabilities that may be utilized (e.g., a maximum of 20% of the system memory), the types of workloads that may be performed (e.g., only scientific research projects), the times when the agent may utilize system resources (e.g., only between 12 to 6 am, or only when the system is idle), or any other desired operational feature. It is noted that in addition to upgrade incentive information indicated above, the user may also be provided information as to how incentives would increase if the user allocated or changed the settings for the agent client manager.
This user selection of operational features allows for workloads to be scheduled or balanced based upon user input and desires. These user vectors, as indicated above, would allow users to dedicate their device capabilities to specific research projects (cancer, Parkinson's disease, Internet, genetics, space science, etc.), to specific non-profit or for profit organizations (Greenpeace, Celera, etc.), educational institutions (University of Texas), a specific group of like minded users, or any other entity or endeavor. This affiliation selection allows the distributed processing system to automatically include a user's device capabilities in a pool dedicated to the chosen affiliation. Additionally, a user could choose to mix various percentages and allocations of device capabilities among multiple affiliations. It is noted that the user need not make any affiliation selection and need not allocate 100 percent of device capabilities. Rather, only a portion of the device capabilities may be allocated to a particular affiliation, leaving the remainder non-allocated and not affiliated. The capability allocation may also be a system-wide (i.e., course) allocation, such as some desired percent of overall device capabilities. The capabilities allocation may also be subsystem specific (i.e., fine) allocation, such as allocation of particular subsystem capabilities to particular affiliations.
Now looking to
In allocating workloads, the control system 304 may consider the capabilities of the client systems 108, 110 and 112 to which the control system 304 is sending workloads. For example, if client 108 has more processing power than client 110, the control system 304 may allocate and send more difficult or larger workloads. Thus, client 108 may receive WL1 336 and WL2 338, while client 110 would only receive WL3. Alternatively, the workload database 308 could be organized with differing levels of processing power or capability requirements for each workload. In this way, WL1 336 may represent a greater processing or system capability requirement than WL2 338. It should be noted that workload may be a processing task, a data storage task, or tied to any other of a variety of capabilities that may be utilized on the client systems 108, 110 . . . 112.
As indicated above, to encourage owners or users of client systems to allow their system capabilities to be utilized by control system 304, an incentive system may be utilized. This incentive system may be designed as desired. Incentives may be provided to the user or owner of the clients systems when the client system is signed-up to participate in the distributed processing system, when the client system completes a workload for the distributed processing system, or any other time during the process. In addition, incentives may be based upon the capabilities of the client systems, based upon a benchmark workload that provides a standardized assessment of the capabilities of the client systems, or based upon any other desired criteria.
One example use of a benchmark workload is to use the benchmark workload to determine incentive values. For example, the server systems 104 may be designed to send out a standard benchmark workload once an hour to each client system 108, 110 . . . 112. If a client system is not available at that time for any reason, the workload would not be completed by the client system, and there would be no incentive value generated for that client system. In this example, the benchmark workload may be a timed work-set that would exercise each subsystem with capabilities within the client system that was desired to be measured. A more capable client system would then generate greater incentive values from executing the benchmark workload, as compared to a less capable client system. These incentive values may be utilized as desired to determine what the client system should get in return for its efforts. For example, if the incentive were a sweepstakes as discussed further below, the number of entries in the sweepstakes may be tied to the system's performance of the benchmark workload. Thus, the faster or better the client system performs the benchmark workload, the more entries the client system would receive.
In the embodiment shown in
The customer systems 152, which represent customers that have projects that they desired to be processed by the distributed processing system, may be connected to the project pre-processing subsystem 342 to provide projects to the server systems 104. These projects are processed by the project pre-processing subsystem 342 and passed to the results/workloads production subsystem 344, which produces and sends out workloads 130 and receives back results 132. The analytic subsystem 346 then takes the results and processes them as desired. Completed project information may then be provided from the analytic system 346 to the customer systems 152. In this manner, the projects of the customer systems 152 may be processed and project results reported by the distributed processing system of the present invention.
Also, as shown, the workloads 130 and the results 132, or other tasks of the server systems 104, may be processed and handled by out-sourced host systems 340, if desired. Thus, some or all of the workloads 130 may be sent first to out-sourced host systems 340. Out-sourced host systems 340 then send workloads 130A to the client systems 134 and receive back results 132A. The out-sourced host systems 340 then send the results 132 back to the server systems 104. It is noted that this out-sourcing of server system tasks may be implemented as desired for any given task that the server systems 104 may have. It is further noted that, if desired, the server systems 104 may perform all of the desired functions of the server systems 104 so that no out-sourced host systems 340 would be used.
At this point, control passes along line 424 to the “determine sweepstakes entries” block 410. In this block 410, the server system 104 determines the entry value for the workload completed or for a standard benchmark or entry workload completed. This entry value may be weighted upon a variety of factors including factors such as the amount of work completed, the difficulty level of the processing required, and the accuracy of the results. It is noted that any desired weighting may be utilized. Thus, it is understood that a wide variety of considerations may be utilized to determine the entry value weighting for the sweepstakes.
Although the weighting determination is shown in block 410 in
It is further noted that the entry value may take any desired form and may be, for example, a multiplier that will be used for each unit of workload completed. In this way, the owner or user will readily be cognizant that a state-of-the-art system will yield a high multiplier, where as an older system, system capability or device will yield a low multiplier. Such feedback, whether communicated to the owner or user immediately upon signing up or upon completion of each workload, will create an incentive for owners and/or users to acquire state-of-the-art systems, thereby further increasing the potential processing power of the distributed processing system of the present invention.
In addition, different workload projects may be designated with different entry values, as well. For example, some workload projects may require particular hardware or software processing systems within a client system or device. Thus, the number of client systems that are capable of performing the task would be limited. To further encourage participation by those owners or users with capable systems, the entry value for taking on particular workloads and/or systems with the desired features may be allocated higher entry values.
Referring back to
The entry period may be any desired time frame and may include multiple overlapping time frames, as desired. For example, winners may be determined daily for entries each day, monthly for entries within a month, and/or yearly for entries within one year. In addition, special entry periods may be generated, if desired, for example where a particularly important workload project had a short time frame in which it needed to be completed.
Looking now to
As discussed above, the server systems 104 manage workloads for the client systems 108, 110 . . . 112. The client systems 108, 110 . . . 112 process these workloads and produce indexing results. The resulting index may be stored at a centrally managed site, such as central index storage block 560, or may itself be distributed over the possibly millions of indexing clients 108, 110 . . . 112, as shown by remote index storage blocks 562, 564 . . . 566. If remote index storage is utilized, a master database content index may be stored locally, for example, in the central index storage block 560. This content index may then direct relevant searches to the distributed massively parallel engine for search queries.
Referring now to
For example, where the network 102 is the Internet or a large intranet, a large amount of processing power and time is needed to create an accurate, complete and up-to-date index of the information. The Internet uses an IP (Internet Protocol) address protocol to direct traffic around the Internet. The IP address is the address of a computer attached to a TCP/IP (Transmission Control Protocol/Internet Protocol) network. Every system on the network must have a unique IP address. IP addresses are typically written as four sets of numbers separated by periods. The TCP/IP packet uses 32 bits to contain the IP address, which is made up of a network and host address (NETID and HOSTID). The more bits used for network address, the fewer remain for hosts. Web pages within a particular web site with a unique address may be addressed through URLs (Uniform Resource Locator) associated with that web site. In short, there is a limited, but very large, number of possible IP addresses for uniquely identifiable Internet sites that may be accessed and analyzed to generate an index of Internet sites and web pages via URLs.
The operation diagram of
Next, following lines 516 and 518, the client systems 108, 110 and 112 complete the workload tasks, get the results ready for transmission, and sends those results back to the system server 104 in “clients complete workload” block 506 and “indexing results sent to server system” block 508. Control passes along line 520 to “index compiled for use” block 510 where the server system formats and/or compiles the results for use. For example, the index results may be utilized for accurate, complete and up-to-date search information for the network 102. As indicated with respect to
It may be expected that different workload projects WL1, WL2 . . . WLN within the workload database 308 may require widely varying processing requirements. Thus, in order to better direct resources to workload projects, the server system may access various system vectors when a client system signs up to provide processing time and other system or device capabilities to the server system. This capability scheduling helps facilitate project operation and completion. In this respect, the capability vector database 620 keeps track of any desired feature of client systems or devices in capability vectors CBV1, CBV2 . . . CBVN, represented by elements 628, 630 . . . 632, respectively. These capability vectors may then be utilized by the control system 304 through line 626 to capability balance workloads.
This capability scheduling according to the present invention, therefore, allows for the efficient management of the distributed processing system of the present invention. This capability scheduling and distribution will help maximize throughput, deliver timely responses for sensitive workloads, calculate redundancy factors when necessary, and in general, help optimize the distributed processing computing system of the present invention. The following TABLE 1 provides lists of capability vectors or factors that may be utilized. It is noted that this list is an example list, and any number of vectors or factors may be identified and utilized, as desired.
TABLE 1
Example Client Capability Vectors or Factors
1. BIOS Support:
a. BIOS Type (brand)
b. ACPI
c. S1, S2, S3, and S4 sleep/wake
states
d. D1, D2 and D3 ACPI device states
e. Remote Wake Up Via Modem
f. Remote Wake Up Via Network
g. CPU Clock control
h. Thermal Management control
i. Docked/Undocked state
control
j. APM 1.2 support
k. Hotkey support
l. Resume on Alarm, Modem Ring and
m. Password Protected Resume
LAN
from Suspend
n. Full-On power mode
o. APM/Hardware Doze mode
p. Stand-by mode
q. Suspend to DRAM mode
r. Video Logic Power Down
s. HDD, FDD and FDC Power
Down
t. Sound Chip Power Down
u. Super I/O Chip Power Down
2. CPU Support:
a. CPU Type (brand)
b. MMX instruction set
c. SIMD instruction set
d. WNI instruction set
e. 3DNow instruction set
f. Other processor dependent instruction
g. Raw integer performance
set(s)
h. Raw FPU performance
i. CPU L1 data cache size
j. CPU L1 instruction cache size
k. CPU L2 cache size
l. CPU speed (MHz/GHz . . .)
m. System bus (MHz/GHz . . .)
speed supported
n. Processor Serial Number
o. CPUID
3. Graphic Support
a. Graphics type (brand)
b. # of graphics engines
c. Memory capacity
d. OpenGL support
e. Direct3D/DirectX support
f. Color depth supported
g. MPEG 1/II decode assist
h. MPEG1/II encode assist
i. OS support
j. Rendering type(s) supported
k. Single-Pass Multitexturing
support
l. True Color Rendering
m. Triangle Setup Engine
n. Texture Cache
o. Bilinear/Trilinear Filtering
p. Anti-aliasing support
q. Texture Compositing
r. Texture Decompression
s. Perspectively Correct Texture
Mapping
t. Mip-Mapping
u. Z-buffering and Double-
buffering support
v. Bump mapping
w. Fog effects
x. Texture lighting
y. Video texture support
z. Reflection support
aa. Shadows support
4. Storage Support
a. Storage Type (brand)
b. Storage Type (fixed, removable, etc.)
c. Total storage capacity
d. Free space
e. Throughput speed
f. Seek time
g. User dedicated space for
current workload
h. SMART capable
5. System
a. System Type (brand)
b. System form factor (desktop,
portable, workstation, server, etc.)
6. Communications Support
a. Type of Connection (brand
of ISP)
b. Type of Connection Device (brand
c. Hardware device capabilities
of hardware)
d. Speed of connection
e. Latency of connection
f. Round trip packet time of connection
g. Number of hops on
connection type
h. Automatic connection support
i. Dial-up only (yes/no)
(yes/no)
j. Broadband type (brand)
k. Broadband connection type
(DSL/Sat./Cable/
T1/Intranet/etc.)
7. Memory
a. Type of memory error
correction (none, ECC, etc.)
b. Type of memory supported (EDO,
c. Amount of total memory
SDRAM, RDRAM, etc.)
d. Amount of free memory
e. Current virtual memory size
f. Total available virtual memory size
8. Operating System
a. Type of operating system
(brand)
b. Version of operating system
c. Health of operating system
9. System application software
a. Type of software loaded and/
or operating on system
b. Version of software
c. Software features enabled/
d. Health of software operation
disabled
This capability scheduling and management based upon system related vectors allows for efficient use of resources. For example, utilizing the operating system or software vectors, workloads may be scheduled or managed so that desired hardware and software configurations are utilized. This scheduling based upon software vectors may be helpful because different software versions often have different capabilities. For example, various additional features and services are included in MICROSOFT WINDOWS '98 as compared with MICROSOFT WINDOWS '95. Any one of these additional functions or services may be desired for a particular workload that is to be hosted on a particular client system device. Software and operating system vectors also allow for customers to select a wide variety of software configurations on which the customers may desire a particular workload to be run. These varied software configurations may be helpful, for example, where software testing is desired. Thus, the distributed processing system of the present invention may be utilized to test new software, data files, Java programs or other software on a wide variety of hardware platforms, software platforms and software versions. For example, a Java program may be tested on a wide proliferation of JREs (Java Runtime Engines) associated with a wide variety of operating systems and machine types, such as personal computers, handheld devices, etc.
From the customer system perspective, the capability management and the capability database, as well as information concerning users of the distributed devices, provide a vehicle through which a customer may select particular hardware, software, user or other configurations, in which the customer is interested. In other words, utilizing the massively parallel distributed processing system of the present invention, a wide variety of selectable distributed device attributes, including information concerning users of the distributed devices, may be provided to a customer with respect to any project, advertising, or other information or activity a customer may have to be processed or distributed.
For example, a customer may desire to advertise certain goods or services to distributed devices that have certain attributes, such as particular device capabilities or particular characteristics for users of those distributed devices. Based upon selected attributes, a set of distributed devices may be identified for receipt of advertising messages. These messages may be displayed to a user of the distributed device through a browser, the client agent, or any other software that is executing either directly or remotely on the distributed device. Thus, a customer may target particular machine specific device or user attributes for particular advertising messages. For example, users with particular demographic information may be targeted for particular advertisements. As another example, the client agent running on client systems that are personal computers may determine systems that are suffering from numerous page faults (i.e., through tracking operating system health features such as the number of page faults). High numbers of page faults are an indication of low memory. Thus, memory manufacturers could target such systems for memory upgrade banners or advertisements.
Still further, if a customer desires to run a workload on specific device types, specific hardware platforms, specific operating systems, etc., the customer may then select these features and thereby select a subset of the distributed client systems on which to send a project workload. Such a project would be, for example, if a customer wanted to run a first set of simulations on personal computers with AMD ATHLON microprocessors and a second set of simulations on personal computers with INTEL PENTIUM III microprocessors. Alternatively, if a customer is not interested in particular configurations for the project, the customer may simply request any random number of distributed devices to process its project workloads.
Customer pricing levels for distributed processing may then be tied, if desired, to the level of specificity desired by a particular customer. For example, a customer may contract for a block of 10,000 random distributed devices for a base amount. The customer may later decide for an additional or different price to utilize one or more capability vectors in selecting a number of devices for processing its project. Further, a customer may request that a number of distributed devices be dedicated solely to processing its project workloads. In short, once device attributes, including device capabilities and user information, are identified, according to the present invention, any number of customer offerings may be made based upon the device attributes for the connected distributed devices. It is noted that to facilitate use of the device capabilities and user information, capability vectors and user information may be stored and organized in a database, as discussed above.
Referring now to
As shown in
Site testing is typically desired to determine how a site or connected service performs under any desired set of test circumstances. With the distributed processing system of the present invention, site performance testing may be conducted using any number of real client systems 108, 110 and 112, rather than simulated activity that is currently available. Several tests that are commonly desired are site load tests and quality of service (QoS) tests. Quality of service (QoS) testing refers to testing a user's experience accessing a network site under normal usability situations. Load testing refers to testing what a particular network site's infrastructure can handle in user interactions. An extreme version of load testing is a denial-of-service attack, where a system or group of systems intentionally attempt to overload and shut-down a network site. Advantageously, the current invention will have actual systems testing network web sites, as opposed to simulated tests for which others in the industry are capable.
Network site 106B and the multiple interactions represented by communication lines 116B, 116C and 116D are intended to represent a load testing environment. Network site 106A and the single interaction 116A is indicative of a user interaction or QoS testing environment. It is noted that load testing, QoS testing and any other site testing may be conducted with any number of interactions from client systems desired, and the timing of those interactions may be manipulated and controlled to achieve any desired testing parameters. It is further noted that periodically new load and breakdown statistics will be provided for capacity planning.
Referring back to
The server systems 104 may also manage the storage and transfer of data so that the data will be readily retrievable once backed-up and stored on the client systems 108, 110 . . . 112. If desired, an summary index or directory of the backed-up data may be stored centrally on the server systems 104, or may be stored remotely on the client systems 108, 110 . . . 112. It is also noted that the server systems 104 may also distribute data back-up workloads so that each portion of the data 802 is stored redundantly on at least two of the client systems 108, 110 . . . 112. This redundancy provides added security should any one or more client systems suddenly cease to be operational.
Looking now to
Within this environment, as depicted in
Aggregation of component level resources, according to the present invention, will now be discussed. As described above, the capabilities of client systems are determined for purposes of allocating, scheduling and managing distributed processing workloads. In other words, each of the client systems may be made up of many individual subsystems with various capabilities. In some cases, it may occur that particular components on different machines may provide added value if combined or aggregated. Thus, utilizing subsystem or component level resources from a heterogeneous group of devices may be the most efficient or otherwise advantageous way of taking advantage of these resources to complete various desired tasks.
Referring now more particularly to
It is noted that any number of different components from different client systems may be aggregated, as desired. For example, for wireless devices, DSP processing and storage components could be aggregated with components from other client systems. For display devices, graphics rendering power could be aggregated. For relatively dumb machines, such as connected household appliances, vending machines, etc., slow-speed processing components could be aggregated. In short, an appropriate workload may include instructions to numerous client systems that will enable collaboration and aggregation of component level resources. Such instructions may include things, such as, where to receive input, where to send output, and ultimately which client systems return final results.
It is further noted that the control instructions may be de-centralized as well. In other words, as indicated above, client systems may communicate directly with each other, for example, in a peer-to-peer fashion. In this way, workload communications may occur directly between client systems, and workload control and management may occur through the client system agents located on client systems.
Still referring to
Identifying idle resources may be determined in any of a variety of ways. It is possible, for example, to simply look at whether a machine is not being used or has low processor utilization at any given time. This simple determination, however, may not yield an accurate picture of how idle a client system may or may not be over a given time period. More particularly, discovery methods may be implemented to identify the activity of a variety of client system components and subsystems. For example, subsystems may be monitored, such as network activity, device output activity, user input, processing activity, executing task monitoring, or mode of operation parameters (e.g., mobile or power management modes, stationary or powered mode). In addition, any number of other device vectors may be monitored or analyzed to determine the true usage and idleness of a client system.
The following TABLE 2 provides a list of idleness vectors or factors that may be utilized in determining the level of device usage or idleness. In particular, TABLE 2 provides two primary categories of activities to monitor or analyze for determination of how idle a client system may or may not be. These activities are user activity and device activity. By monitoring, analyzing and tracking these client system elements and activities over time, a better determination of device usage and idleness may be made. It is noted that the list provided in TABLE 2 is an example list, and any number of categories, vectors or factors may be identified and utilized, as desired, according to the present invention.
TABLE 2
Example Client Idleness Vectors or Factors
1. User Activity (e.g., monitor
a. keyboard input
input activities, monitor output
activities, monitor time elapsed
since last input event and between
input events, etc.)
b. mouse input
c. microphone/voice input
d. tablet input
e. pen input
f. touch screen input
g. joystick input
h. gamepad input
i. video output
j. printer output
k. any other user activity that could
be utilized to classify if a device
is idle
2. Device Activity (e.g., monitor
a. power state (e.g., time since last
utilization levels, monitor time
power state change event)
elapsed since last device activity,
monitor time between changes in
device utilization levels, etc.)
b. mobility state (e.g., time since
c. screen saver activity or trigger
device last in mobile state)
(e.g., time elapsed since screensaver
activity or trigger)
d. screen output (e.g., time elapsed
e. network or communication packets
since last screen output, paint
sent or received (e.g., time elapsed
event or pixel change)
since last network or communications
activity)
f. storage device activity (e.g., time
g. processor, DSP, microcontroller,
elapsed since last storage device
embedded device, or other processor
activity, such as hard drives, flash
activity (e.g., time elapsed since
memory cards, removable drives,
last processor activity)
CD drives, DVD drives, etc.)
h. processor, DSP, microcontroller,
i. tasks or processes executing (e.g.,
embedded device, or other
time elapsed since change in number
processing device utilization
of tasks or processes executing)
(e.g., change in utilization levels)
j. task or process device utilization
k. any other device activity that could
(e.g., time since change in task or
be used to classify if a device is idle
process device utilization)
As a further example of the usefulness of this determination, reference is made back to
One example for such network caching is Internet video or multimedia broadcast events that are desired to be viewed or received by a very large number of geographically close connected devices at about the same time. In order to meet the demand of these connected devices, web sites broadcasting an event have to be able to handle a huge increase in network traffic over a short period of time. By locally caching the transmission to idle client systems, a web site can reduce the direct demand on its own resources. This is so because other connected devices may receive a re-transmitted broadcast, although delayed, from the idle client system. It is noted that according to the present invention idle client systems 902A, 902B and 902C may work independently or in combination. Even though idle client systems are suited for providing the caching function, it is also noted that that network caching may be accomplished using one or more client systems regardless of their respective levels of idleness.
As depicted, the capabilities subsystem 1006 includes an idle system monitor 1022, as described above, that monitors and analyzes user and device activities associated with the client system to determine the level of activity or idleness for the client system. The information determined by this idle system monitor 1022 may then be communicated externally, for example, through the security subsystem 1010 to the server systems 104. The server systems 104 may then store and analyze system idleness data from across the distributed processing system. This idleness data may become part of the capabilities database that is utilized to allocate and manage workloads and processing system resources.
Still referring to
Looking first to
One example utilizing the process 1150 or the process 1100 is for server systems 104 to query the client systems for entry workload processing at regular time intervals. If a distributed device returns a completed entry workload back within a selected period of time from the distribution of the entry workload, the server system may conclude that the distributed device should receive an entry because the distributed device is providing resources to the distributed processing system. In this way, the server systems 104 may determine at regular intervals whether a given client system is working on project workloads for the distributed processing system. Alternatively, the client system agent may locally control the workload processing and may, for example, cause the client system to process and generate entries at regular time intervals. It is noted that non-regular and varying time intervals may also be utilized and that combinations of remote and local control may also be utilized, as desired.
The timing of when a client system processes the entry workload, therefore, may be determined locally by the client system agent or remotely, for example, through commands sent by the server systems 104. In addition, periodic timing control may also be accomplished through various combinations of control routines residing locally and remotely. It is further noted that any number of different variations may be utilized to provide machine generated entries to a sweepstakes, according to the present invention. Thus, a client system may generate sweepstakes entries in any of a variety of ways and still have machine generated sweepstakes entries, according to the present invention.
Converting file types, web pages, graphics images, etc., between device types can be a highly intensive processing task. Example devices that often need converted data are wireless devices, such as pagers and cell phones, that request Internet web page information from their respective device servers. The device server, instead of incurring the overhead of reformatting the requested data for the wireless devices, may instead distribute the requested page or data address, the device type information of the requesting device, and return address for the reformatted data. According to the present invention, the data conversion, translation or processing may be performed by a client system of the distributed processing system of the present invention. The resulting data may then be returned or provided to the original requesting device. In addition to data formatting for cell phones, language conversion, text translation and media translation services, or any other desired data conversion can also be hosted for a customer through the distributed processing system of the present invention.
It is noted that the data conversion operation contemplated by the present invention is not limited to any particular requesting device, any particular service provider, any particular type of data to be processed, any particular type of resulting processed data, or any particular data source. Thus, the data processed may include voice, text, application, image, source code, or any other data type or combination of data types, and the resulting processed data may also include voice, text, application, image, or any other data type or combination of data types. According to the present invention, the distributed processing system is utilized to process any data that is desired by a requesting device and that must be converted or processed before being provided to the requesting device. For example, end-user devices connected to the Internet, such as personal computers, may sign up for data conversion services through the server system so that the end-user device may request data conversion of any desired data, file, web site content, etc. Language translations and data formatting for connected wireless are just two examples of such applications for the present invention.
Looking now to the embodiment of
In the application contemplated by
It is noted the transmission of processed data to the requesting wireless device 1306 may occur in a variety of ways. For example, the processed data may be transmitted from a client system 108 to the server 104, then to the wireless device server 1304 and finally to the wireless devices 1306. Alternatively, the processed data may be transmitted from a client system to the wireless device server 1304, and then to the wireless devices 1306. Still further, the processed data may be transmitted directly from a client system to the wireless devices.
As shown in
Looking now to
In the embodiment shown in
According to the present invention, the web site 1404 may off-load some or all of its data handling requirements by using the distributed processing system of the present invention for data caching. The web site 1404 may contact server systems 104 and request data caching services. The server systems 104 may then identify a local machine, such as client device 1412E, to act as a local distributor of the content for web site 1404. For example, one or more idle client devices that have been identified, as discussed above, may be utilized as local distributor client device 1412E. The local distributor client device 1412E may first download the content and pass it on to other client and non-client devices 1412B, 1412C and 1412D through communication links 1416A, 1416B and 1416C. It is noted that this caching will be aided if the client and non-client devices receiving the cached data are relatively short communication hops from local distributor client device 1412E.
This data or network caching allows data to be streamed to an end user level device, which may then pass the data on to other end user devices. Thus, the downstream communications may be limited, thereby taking the distribution burden off of the web site. For example, web site 1404 may have a large streaming video or multimedia file that is experiencing a heavy load from a given set of network devices. This data file may be cached by a machine, such as client device 1412E, that is below from a communication link 1410. Then, other devices that are also below this communication link 1410 may download the streaming video data from the client device 1412E. This caching eliminates the need to repeatedly send the same data through the same communication links to requesting devices that are located below common communication links. It is noted that the file and data distribution possibilities for this peer file access, caching and data transmission, according to the present invention, are wide and varied and should not be seen as limited to the embodiment shown in
A client agent, as discussed above, installed on the client systems 108A, 108B, 108C, 108D, 108E, 108F, 108G and 108H includes functionality that facilitates a number of services with respect to data transmission and sharing. First, the client agent provides a protected data storage area accessible to outside devices, which is represented by the SD block within each client system in
These shared data (SD) blocks provide mechanisms that enable a wide variety of possible interactions among the client systems 108A, 108B, 108C, 108D, 108E, 108F, 108G and 108H. For example, the data sharing mechanism may provide a space for a cache of other device addresses attached to the network for both communication purposes as well as security purposes. The mechanism may also provide a simple indexing system that is automatically re-indexed when content is added or removed from the storage area. This indexing system may provide a mechanism for other client agents to perform discovery on the local client information and visa versa. Through information stored within this shared data, the distributed processing system of the present invention facilitates many distributed file system applications such as distributed resume posting, distributed caching, distributed advertisement serving, etc. In addition to the above, the storage block (SD) within each client system may include an interface for displaying or playing data types (such as images, audio files, video files, etc.) stored both locally and/or remotely on other client devices. This would enable simple picture sharing, for example, between remote families connected via the internet, as part of being a client system within the distributed processing system of the present invention.
In the embodiment shown in
Applications for this data distribution are widely varied. For example, any important file that is time sensitive may be propagated to a large number of client devices, non-client devices, servers, or other connected devices, in a short amount of time. This transmission may occur quickly and efficiently once the information is injected into the distributed processing system of the present invention. Example time sensitive data files are anti-virus signature files, which when distributed through the distributed processing system of the present invention, may be transmitted through the network fabric faster than a new virus may normally proliferate.
Another application for rapid propagation of files is utilizing this technique for propagation of workloads. One example is distributed resume or job searching. In such a system, participating job seekers and participating employers may rapidly search for one another. A job seeker may inject a job request or search into the fabric that is then routed by each successive device to other devices without the need for control from the server systems 104. Similarly, an employer may inject candidate criteria into the fabric that is then routed to successive devices. The result is an extremely fast search and identification of employers and candidates.
As discussed above, each client system includes a client agent that operates on the client system and manages the workloads and processes of the distributed processing system. As shown in
Also as discussed above, security subsystems and interfaces may be included to provide for secure interactions between the various devices and systems of the distributed processing system 100. As depicted in
In operation, client systems or end-users may utilize the clients subsystem 1548 within the web interface 1554 to register, set user preferences, check statistics, check sweepstakes entries, or accomplish any other user interface option made available, as desired. Advertising customers may utilize the advertisers subsystem 1552 within the web interface 1554 to register, add or modify banner or other advertisements, set up rules for serving advertisements, check advertising statistics (e.g., click statistics), or accomplish any other advertiser interface option made available, as desired. Customers and their respective task or project developers may utilize the task developer subsystem 1550 to access information within database systems 1546 and modules within the server systems 104, such as the version/phase control subsystem 1528, the task module and work unit manager 1530, and the workload information 308. Customers may also check project results, add new work units, check defect reports, or accomplish any other customer or developer interface option made available, as desired.
Advantageously, the customer or developer may provide the details of the project to be processed, including specific program code and algorithms that will process the data, in addition to any data to be processed. In the embodiment shown in
Information sent from the server systems 104 to the client agents 270A, 270B . . . 270C may include task modules, data for work units, and advertising information. Information sent from the client agents 270A, 270B . . . 270C to the server systems 104 may include user information, system information and capabilities, current task module version and phase information, and results. The database systems 1546 may hold any relevant information desired, such as workload information (WL) 308 and client capability vectors (CV) 620. Examples of information that may be stored include user information, client system information, client platform information, task modules, phase control information, version information, work units, data, results, advertiser information, advertisement content, advertisement purchase information, advertisement rules, or any other pertinent information.
Now looking to
Referring to
Electronic information 1602 represents information that is communicated to facilitate the operations of the distributed processing system 1600. Such information includes the client agents that are downloaded to each client system, the workload applications for any given workload, and any work unit that will be processed by a client system. Electronic information 1602 may also be any type of information to be sent or received within the distributed processing system, such as text, images, audio streams, video streams, databases, spreadsheets, PDF files, Shockwave data, Flash data, applications, data files, chat streams, or any other information, data or data streams. In addition, electronic information may be sent by client systems 108A, 108B, 108C, 108D, 108E and 108F to the server systems 104 and/or any of the other client systems.
The Certificate Authority (CA) block 1604 within the server systems 104 represents an entity that helps to ensure validity of encryption and decryption codes. For example, within a public/private key encryption environment, a Certificate Authority may help ensure that a public key alleged to be from a particular entity is in fact legitimately from that entity. One third-party entity that performs this CA function on the Internet is Verisign, Inc. Having a third-party perform the CA function can be advantageous in a transaction or communication between non-trusted entities. For example, the sending entity provides its public key information to the third-party CA, which verifies the information and creates a certificate that includes the sending entity's public key information. This certificate may then be encrypted and signed by the third-party CA. The receiving entity may then obtain the certificate from the third-party CA and decrypt it with the third-party CA's public key. The receiving party will then have the sending party's public key and be fairly secure that it is a legitimate public key from the sending party.
As shown in
In operation, the server systems 104 may secure the download of the client agent 270 to the client system 108 by requiring that the client system 108 download the client agent 270 from the client agent download site 1710. As part of the server authentication sequence, the download site 1710 will send back an identifier to assure users that they are indeed connected to the proper server systems 104. This identifier may be, for example, a CA certificate, but may be any other identifier, as desired. Because it is desirable to have the client agent running on as many distributed devices as possible for the distributed processing system of the present invention, user authentication may not be required to download the client agent 270 from the download site 1710.
Once a client system 108 has downloaded and installed the client agent 270, the client system 108 will communicate with the application server 1714 to begin working within the distributed processing system. For these communications, server and client authentication may be required to help ensure security. To accomplish this authentication, for example, two-way authentication may be utilized. To provide a public/private key combination for the client agent 270, each client agent 270 that is downloaded by a client system 108 may have embedded within its code a default identifier and a default public/private key pair. Thus, the server systems 104 may use secure network protocols (such as SSL or similar schemes) to authenticate each client system 108, and each client system 108 may use compatible protocols to authenticate each server application with which it communicates. These applications, for example, may include the functionality provided by blocks 1712 and 1714, and, therefore, the communications 1706 and 1708 would utilize authentication.
As an alternative to embedding a public/private key combination and associated identifiers or certificates into the client agent 270, the public/private key pairs may be dynamically generated in block 1712. For example, at start-up, at reboot or at some desired time or event, the client system 108 may generate a new public/private key pair. When the client system 108 next communicates with the server systems 104, the client system 108 request a certificate from the server systems 104. The server systems 104 may then act as a Certificate Authority (CA) and provide a CA certificate to the client system 108. This dynamic certificate generation, therefore, allows for added security by allowing each client system 108 to have its own public/private key pair for secure network protocol communications and by having this key pair change at some desired recurring event for the client system 108, such as reboot.
The client system 108 may initiate its communication with the server systems 104 by logging on to the authentication server, which may be part of block 1712. The user may be prompted to enter a valid e-mail address and/or password, if already registered, or may be asked to register if the e-mail address and/or password are not recognized. Once registration is completed, a password may be e-mailed back to the user to provide validation of the user. If authentication is successful when a user logs into the server systems 104, the server systems 104 may provide a host-ID, and user-ID and a session key for any given communication session.
It is also desirable that once a user has successfully registered, the user may install the client agent 270 on any number of other host or user systems without needing to interact with that systems network browser, other than to set host-specific preferences. For example, when downloaded, the client agent 270 may take the form of a self-extracting program that installs the appropriate files to the client system 108, including the proper host and user identifications. In addition, to help ensure proper identification, the session keys may be exchanged each time the client system 108 communicates with the server systems 104. For example, the client system 108 may communicate its current session key to the server systems 104 each time it communicates with the server systems 104. The server systems 104 will then send a new session key for the client system 108 to utilize for the next session. In this way, stale identification information may be reduced. In addition to this security feature, communications may also be encrypted and decrypted with various encryption techniques, as desired.
Referring now to
One path begins with the electronic information 1602 being encrypted with the server private key in block 1802. Then, in block 1830, the encrypted information is sent to client systems. This encrypted information is represented by arrow 1826.
A second path flows from block 1802 to block 1804 where a hash value is generated for the encrypted electronic information. It is noted that a hash value is a unique value that may be generated for any given electronic file based upon the contents of that file and the algorithm used to calculate the unique value. There are any number of algorithms that may be used to calculate a hash value, as would be understood by one of skill in the art. Proceeding down the second path to block 1806, the hash value generated on the server side for the encrypted electronic information (i.e., the information sent to the client system from block 1830 via 1826) is compared with a hash value 1822 from the client system 108. This hash value 1822 represents the client system's calculation of the hash value for the encrypted electronic information that the client system 108 received from the server system 104. If no tampering has occurred and the data was transmitted accurately, the client system hash value should match the server hash value. In block 1808, the server systems 104 provide an indication of the result of the hash check evaluation back to the client system 108. This pass/fail determination is indicated by arrow 1824.
A third path begins with block 1810 where a hash value is calculated for non-encrypted electronic information 1602. This hash value is then encrypted in block 1816 with the server private key. Next, this encrypted hash value is sent to the client system 108 in block 1818. The arrow 1821 represents the encrypted hash value for the non-encrypted electronic information.
A fourth path, and the last depicted in the embodiment 1800 of
Looking now to
In block 1862, the client system 108 receives the encrypted information 1826. Next, the client system 108 creates a hash value for the encrypted information in block 1864. This hash value is preferably calculated using the same algorithm utilized by the server systems 104 in generating the hash value for the encrypted information in block 1804 of
If the hash check evaluation was a PASS, flow passes to block 1872 where the electronic information is decrypted with the server public key, which was verified in block 1856. A hash value is then calculated for the electronic information 1874. Again, the hash generation algorithm is preferably the same as that used by the server systems 104 in creating the hash value in block 1810 of
One of the other hash values comes from a path that begins with block 1858, in which the client system 108 receives the encrypted hash value 1821 for the non-encrypted information. In block 1860, the encrypted hash value is decrypted with the server public key. The hash value is then sent to block 1886.
The third hash value for block 1886 comes from a path that utilizes the N different hash portions sent out by the server systems in block 1820 of
Once the three hash values are received in block 1886 from three different sources, they are compared to see if they match. If this check is a FAIL, flow moves to block 1888, where the client system 108 sends out a notice to the server systems 104 and any other client system to which it is attached that a problem has been encountered. The client system 108 may also inform the client systems from which it received the N−1 other portions, and the client system 108 may retry the procedures, if desired. In addition, once a client system 108 is notified of a potential problem, the client system 108 may download a special check file from the server systems 104 to make sure that the server systems have not been compromised. If still a FAIL, the client system 108 then ends the current connection with the server systems 104. If the check is a PASS, the electronic information is utilized, as represented by block 1890.
Looking first to
The service provider 1902 may be, for example, an Internet business that provides any of a variety of services to users, such as Internet access, e-mail, web page hosting, domain name hosting, file sharing services or any other Internet-based service. In addition, such Internet-based services may be offered for free or low cost to users, in which case the users have historically agreed to view banner or other advertisements in return for the free or low cost service. However, as stated above, advertising revenue has been subject to diminished pricing and has become a unreliable source of revenue for many Internet-based companies. To facilitate the number of projects that the distributed processing system 100 can take on and the speed at which these projects can be processed and completed, it is desirable to increase the amount and capabilities of the computing resources available to the distributed processing system 100. To the extent that the users of the service provider 1902 represent a pool of underutilized resources, these users represent a potentially valuable resource to the distributed processing system 100.
According to the present invention, the service provider 1902 may realize value from its user base and thereby monitize this user base by facilitating the use by the distributed processing system 100 of computing resources related to these users. Thus, for example, in return for free services, the users may agree to have their respective computing resources utilized by the distributed processing system 100. The service provider 1902 may then provide to the distributed processing system 100 the user identifications (IDs) 1908 related to its user base in return for revenue sharing 1910. This monitizing architecture according to the present invention thereby provides a significantly advantageous avenue for service providers or other entities that control or have user bases with useful processing capabilities, such as Internet-based service providers, to generate revenue from its user base, particularly in the face of falling revenue from other sources, such as advertising revenue.
The revenue sharing 1910 may be, for example, a share of payment 1916 relative to the amount of processing toward the project 1912 that was completed through the use of the user resources 1922 made available through users 1906A, 1906B . . . 1906C. It is noted that the revenue sharing 1910 may take any desired form, including but not limited to (a) upfront payments based upon attributes of the user base, such as size or processing capabilities, (b) payments based upon the number of users that become members of the distributed processing system, (c) payments based upon the types of projects processed by the user base, or (d) any other desired compensation scheme related to the value of the user base being made available by the third party.
The monitizing invention, therefore, focuses on capabilities of internet, intranet, wireless or otherwise network connected PCs, internet appliances, notebook computers, servers, storage devices, NAS (Network Attached Storage), or any other connected computing device that could provide any of a number of useful capabilities and that is part of a underutilized user base, such as user bases of Internet-based businesses that rely on advertising or any other method of monitizing their user base in exchange for a valuable service (e.g. free internet access, email, etc.). As discussed above, these useful processing capabilities span the entire range of generic computing subsystems including: Central Processing Unit(s) (CPUs), Digital Signal Processor(s) (DSPs), Graphics Processing Engine(s) (GPEs), Hard Drive(s) (HDs), Memory (MEM), Audio Subsystem(s) (ASs), Communications Subsystem(s) (CSs), Removable Media Types (RMs), or other Add-In/On Accessories (A/OAs) with potentially useful unused capabilities. Market creation and potential compensation for all unused capabilities can be accomplished through the massively parallel distributed software architecture of the distributed processing system 100. For example, credits (revenues) would be generated each time a unit of work is accomplished by one (or more) of the subsystems on a user's computing device via a client agent installed on the device for the purposes of managing, processing and completing units of work. The total credits/revenues generated may be, for example, dynamic depending on how many are received. Through this architecture of the present invention, significant revenues may be generated from the user base of the service provider where the service provider may have previously been unable to monitize effectively this user base.
It is further noted in more general respects that the entity 1902 may be any entity that has direct or indirect control over a group of users, such that the users resources may be offered to and utilized by the distributed processing system 100. An example of one such more general entity would be a company that has a large group of internal users that are capable of being linked to the distributed processing system 100, for example, through an intranet network of computer systems or computing devices. The computing resources related to these users may also be monitized according to the present invention.
Looking now to
Also depicted in
It is noted that this modular architecture facilitates the development of project software code and interface software code by entities other than the owner of the distributed processing system 100. For example, with respect to
As with other embodiments described above, the NAS embodiment 2100 focuses on taking advantage of unused or under-utilized capabilities of Internet, intranet, wireless or otherwise network connected personal computers (PCs), internet appliances, notebook computers, servers, storage devices or any other connected computing device. Such devices have typically been put into operation for purposes entirely separate from operating as a part of a distributed processing or storage system and have a primary operational purpose that is not to provide NAS services. Through the client agent and infrastructure implementation of the present invention, such devices can provide storage capabilities that allow these devices to appear to users as dedicated NAS devices, while still being used for the purpose for which they were put into operation. For example, a large number of desktop PCs in the enterprise (Intranet) or on the Internet can each act as a NAS device by running a client agent program and NAS component that brings its resources to the network with the appearance of a dedicated NAS device or as part of an integrated system that appears as a single or dedicated NAS device. The implementation can be accomplished in a variety of ways. A relatively simple implementation is to have the devices simply mimic the functionality of stand-alone NAS devices, while a more complex implementation is to provide a storage fabric across the Intranet or Internet where hundreds or thousands of devices work cooperatively as NAS devices in conjunction with server systems that assist in controlling and managing the storage function of the NAS fabric.
Looking now to
The NAS distributing computing embodiment 2100 depicted provides an environment in which a variety of different NAS configurations may be utilized, as desired. These configurations include, for example, at least three different NAS architectures that may be utilized: a stand-alone only NAS device implementation, a NAS device fabric implementation, and a server assisted implementation. It is noted that variations, combinations and hybrids of these implementation examples may be utilized, as desired, without departing from the present invention.
First, the NAS client devices within the client device fabric 2104 can act as stand-alone NAS devices, and the user devices within the user device fabric 2102 can directly access them as such. In this first implementation, the NAS devices 108A, 108B . . . 108C run client agent programs that configure the devices to be capable of mimicking dedicated stand-alone NAS devices. Each of these software-based NAS devices is self-contained, knows nothing of other software-based NAS or other NAS devices, and operates like a standard dedicated NAS device, except for the fact that the software-based NAS devices 108A, 108B . . . 108C are actually non-dedicated devices that rely on spare and/or unused capabilities of the existing devices to provide NAS services. In this stand-alone only implementation, the data location libraries 2106A and 2106B would not be required to be utilized.
Second, at least some of the NAS client devices within the client device fabric 2104 include data location information or libraries that are used to provide links or directions to data distributed on the various NAS client devices 108A, 108B . . . 108C. These links help provide a NAS device fabric from which user server systems 154D and user devices 152A, 152B. . . 152C within the user device fabric 2102 can draw storage resources. For example, in the embodiment shown in
In the third server assisted architecture, server systems 104 facilitate the NAS functionality, for example, by providing centralized management, control and support for the NAS architecture. To this end, the NAS servers systems 104 may include, for example, file storage database systems 2108 and a centralized data location library 2110. In this implementation, therefore, the NAS client devices 108A, 108B . . . 108C that are running client agents which make them capable of mimicking dedicated NAS devices are combined with centralized database and server systems 104, 2108 and 2110 that provide services, such as indexing, monitoring, back-up, security and other services for the files and other data being stored on the multitude of software-based NAS devices creating the NAS fabric. Thus, the NAS server systems storing data location information in the centralized data location library 2110, for example, would receive storage and access requests from user devices and would at least in part direct the user devices to the distributed devices storing the requested data. It is noted that the server systems 104 could direct the users to the requested data using only the centralized data location library 2110 or with assistance from other resources such as the data location information stored by the NAS devices.
It is further noted, as also discussed above, that the NAS server systems 104, as with the user server systems 154D, are typically a single server machine or a relatively small group of server machines that are commonly controlled and managed, for example, as to physical location and authorized use. In contrast, the user device fabric 2102 and the client device fabric 2104 are typically a multitude of devices that do not have clear bounds. For example, with respect to Internet-connected user devices and client devices, these devices are typically not related and not commonly controlled or managed. With respect to intranet-connected user devices and client devices, there will often be more common control and management, for example, with respect to internal company computer resources. As contemplated by the present invention, once the software-based NAS functionality is implemented, any of a variety of user devices 152A, 152B . . . 152C and/or user server systems 154D may take advantage of the software-based NAS resources made available by the distributed computing system of the present invention.
In providing NAS services, it is advantageous for the software-based NAS implementation of the present invention to remain unobtrusive to the end-user or owner of the device from a storage perspective. It is also advantageous to facilitate the full use of available storage space. To help achieve and ensure these objectives, the NAS implementation may undertake a number of controls to minimize interference with user storage operations while maximizing the storage value of the software-based NAS solution. These controls may include user or server controlled management features and may include, for example, user specified constraints, standard bit, block or file priority levels and direct bit or file priority markings. Using such storage priority controls, the present invention may maximize storage space efficiency by helping to take advantage of the storage space so that it is operated at a full level. It is noted that these storage priority controls may also be utilized for activities and operations, other than AS services, that are being provided by a client agent program running on a distributed device.
With respect to the user specified constraints, the client agent program running on a device would recognize and adhere to user-based constraints that may be specified by the user. These constraints may be set by a user, owner, administrator, etc. for the device and may include settable parameters such as a maximum allowed percentage for use of existing storage space, a maximum number of bytes that may be used (MB, GB, TB, etc.), or a minimum amount of storage space that must be left free within the available storage. When these user-based constraints are utilized, the NAS component will recognize the constraints placed on it and adhere to the constraints, up to and including, deleting all shared storage on the device and becoming dormant.
With respect to storage priority levels, the client agent program may rely upon priority levels for bits on the storage device, blocks of data on the device, files on the device, or fragments of files on the device to determine and facilitate how data storage is managed. By using storage priority levels, any of a wide variety of schemes may be implemented for handling storage and storage conflicts and these schemes may be selected depending upon the circumstances for any given client system. In this way, when space on the device is running low, older or less important data or files can be deleted according to fixed or dynamic algorithms. For example, file or data assessment and storage management schemes could include, but are not limited to, a deletion scheme that uses an algorithm, such as one of the following:
With respect to direct bit, block or file priority marking, the files or data could include a direct marking for QoS (quality of service) levels that would allow efficient management of storage. By using such a direct marker, a file system priority level may be achieved that resembles execution thread priorities in modern operating systems that help fully utilize the processing power of a central processing unit (CPU). Thus, as each program running on a computer may have a CPU-related service level designation, each file or set of data stored on a storage device may include a storage priority level designation. The level of service provided to any given file or set of data by a control and management scheme may then be determined by the storage priority level designation for that file or set of data.
Further modifications and alternative embodiments of this invention will be apparent to those skilled in the art in view of this description. It will be recognized, therefore, that the present invention is not limited by these example arrangements. Accordingly, this description is to be construed as illustrative only and is for the purpose of teaching those skilled in the art the manner of carrying out the invention. It is to be understood that the forms of the invention herein shown and described are to be taken as the presently preferred embodiments. Various changes may be made in the shape, size and arrangement of parts. For example, equivalent elements may be substituted for those illustrated and described herein, and certain features of the invention may be utilized independently of the use of other features, all as would be apparent to one skilled in the art after having the benefit of this description of the invention.
Patent | Priority | Assignee | Title |
10133566, | Mar 30 2017 | Adtran, Inc.; ADTRAN, INC | Software upgrading system and method in a distributed multi-node network environment |
10212483, | Apr 26 2013 | LEONOVUS INC | Cloud computing system and method based on distributed consumer electronic devices |
10333860, | Jul 10 2013 | LEONOVUS USA | Cloud computing system and method utilizing unused resources of non-dedicated devices |
8694965, | Apr 25 2007 | International Business Machines Corporation | Generating customized documentation for a software product |
9354853, | Jul 02 2008 | Hewlett-Packard Development Company, L.P.; Hewlett-Packard Development Company LP | Performing administrative tasks associated with a network-attached storage system at a client |
9451322, | Apr 26 2013 | LEONOVUS USA | Cloud computing system and method based on distributed consumer electronic devices |
9891902, | Jul 02 2008 | Hewlett-Packard Development Company, L.P. | Performing administrative tasks associated with a network-attached storage system at a client |
ER2062, |
Patent | Priority | Assignee | Title |
4669730, | Nov 05 1984 | Automated sweepstakes-type game | |
4699513, | Feb 08 1985 | BOARD OF TRUSTEES OF THE LELAND STANFORD JUNIR UNIVERSITY THE, A CORP OF CA | Distributed sensor and method using coherence multiplexing of fiber-optic interferometric sensors |
4818064, | Sep 24 1987 | BOARD OF TRUSTEES OF THE LELAND STANFORD JUNIOR UNIVERSITY, THE | Sensor array and method of selective interferometric sensing by use of coherence synthesis |
4839798, | Nov 07 1984 | Hitachi, Ltd. | Method and apparatus for controlling job transfer between computer systems |
4893075, | Aug 29 1988 | Eaton Corporation | Dual speed sensor pickup assembly with anti-cross talk coils |
4987533, | May 05 1988 | International Business Machines Corporation | Method of managing data in a data storage hierarchy and a data storage hierarchy therefor with removal of the least recently mounted medium |
5031089, | Dec 30 1988 | United States of America as represented by the Administrator, National | Dynamic resource allocation scheme for distributed heterogeneous computer systems |
5402394, | Dec 04 1991 | Renesas Electronics Corporation | Process for generating a common time base for a system with distributed computing units |
5594792, | Jan 28 1994 | Firsttel Systems Corporation | Methods and apparatus for modeling and emulating devices in a network of telecommunication systems |
5655081, | Mar 08 1995 | BMC SOFTWARE, INC | System for monitoring and managing computer resources and applications across a distributed computing environment using an intelligent autonomous agent architecture |
5659614, | Nov 28 1994 | DOMINION VENTURE FINANCE L L C | Method and system for creating and storing a backup copy of file data stored on a computer |
5740231, | Sep 16 1994 | AVAYA Inc | Network-based multimedia communications and directory system and method of operation |
5740549, | Jun 12 1995 | Meta Platforms, Inc | Information and advertising distribution system and method |
5768504, | Jun 30 1995 | International Business Machines Corporation | Method and apparatus for a system wide logan in a distributed computing environment |
5768532, | Jun 17 1996 | International Business Machines Corporation | Method and distributed database file system for implementing self-describing distributed file objects |
5790789, | Aug 02 1996 | Method and architecture for the creation, control and deployment of services within a distributed computer environment | |
5793964, | Jun 07 1995 | GOOGLE LLC | Web browser system |
5806045, | Feb 04 1994 | LOYALTY CENTRAL INC | Method and system for allocating and redeeming incentive credits between a portable device and a base device |
5826261, | May 10 1996 | EXCITE, INC | System and method for querying multiple, distributed databases by selective sharing of local relative significance information for terms related to the query |
5832411, | Feb 06 1997 | Raytheon Company | Automated network of sensor units for real-time monitoring of compounds in a fluid over a distributed area |
5842219, | Mar 14 1996 | International Business Machines Corporation | Method and system for providing a multiple property searching capability within an object-oriented distributed computing network |
5848415, | Dec 18 1996 | GOOGLE LLC | Selective multiple protocol transport and dynamic format conversion in a multi-user network |
5881232, | Jul 23 1996 | International Business Machines Corporation | Generic SQL query agent |
5884320, | Aug 20 1997 | International Business Machines Corporation | Method and system for performing proximity joins on high-dimensional data points in parallel |
5887143, | Oct 26 1995 | Hitachi, Ltd. | Apparatus and method for synchronizing execution of programs in a distributed real-time computing system |
5893075, | Apr 01 1994 | Plainfield Software | Interactive system and method for surveying and targeting customers |
5907619, | Dec 20 1996 | Intel Corporation | Secure compressed imaging |
5911776, | Dec 18 1996 | Unisys Corporation | Automatic format conversion system and publishing methodology for multi-user network |
5953420, | Oct 25 1996 | International Business Machines Corporation | Method and apparatus for establishing an authenticated shared secret value between a pair of users |
5964832, | Apr 18 1997 | Intel Corporation | Using networked remote computers to execute computer processing tasks at a predetermined time |
5978594, | Sep 30 1994 | BMC Software, Inc. | System for managing computer resources across a distributed computing environment by first reading discovery information about how to determine system resources presence |
5987621, | Apr 25 1997 | EMC Corporation | Hardware and software failover services for a file server |
6003065, | Apr 24 1997 | Oracle America, Inc | Method and system for distributed processing of applications on host and peripheral devices |
6009455, | Apr 20 1998 | Distributed computation utilizing idle networked computers | |
6014634, | Dec 26 1995 | Catalina Marketing Corporation | System and method for providing shopping aids and incentives to customers through a computer network |
6014712, | May 21 1996 | GOOGLE LLC | Network system |
6024640, | Jun 30 1995 | Walker Digital, LLC | Off-line remote lottery system |
6026474, | Nov 22 1996 | GOOGLE LLC | Shared client-side web caching using globally addressable memory |
6052584, | Jul 24 1997 | BELL ATLANTIC MOBILE SYSTEMS, INC | CDMA cellular system testing, analysis and optimization |
6052785, | Nov 21 1997 | CLOUD SOFTWARE GROUP SWITZERLAND GMBH | Multiple remote data access security mechanism for multitiered internet computer networks |
6058393, | Feb 23 1996 | International Business Machines Corporation | Dynamic connection to a remote tool in a distributed processing system environment used for debugging |
6061660, | Oct 20 1997 | KROY IP HOLDINGS LLC | System and method for incentive programs and award fulfillment |
6065046, | Jul 29 1997 | CATHARON PRODUCTS INTELLECTUAL PROPERTY, LLC | Computerized system and associated method of optimally controlled storage and transfer of computer programs on a computer network |
6070190, | May 11 1998 | ServiceNow, Inc | Client-based application availability and response monitoring and reporting for distributed computing environments |
6078953, | Dec 29 1997 | EMC IP HOLDING COMPANY LLC | System and method for monitoring quality of service over network |
6078990, | Feb 06 1998 | TERADATA US, INC | Volume set configuration using a single operational view |
6094654, | Dec 06 1996 | International Business Machines Corporation | Data management system for file and database management |
6098091, | Dec 30 1996 | Intel Corporation | Method and system including a central computer that assigns tasks to idle workstations using availability schedules and computational capabilities |
6101508, | Aug 02 1996 | Hewlett Packard Enterprise Development LP | Clustered file management for network resources |
6112181, | Nov 06 1997 | INTERTRUST TECHNOLOGIES CORP | Systems and methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information |
6112225, | Mar 30 1998 | International Business Machines Corporation | Task distribution processing system and the method for subscribing computers to perform computing tasks during idle time |
6112304, | Aug 27 1997 | Zipsoft, Inc.; ZIPSOFT, INC | Distributed computing architecture |
6115713, | Jan 30 1990 | Johnson Controls Technology Company | Networked facilities management system |
6128644, | Mar 04 1998 | Fujitsu Limited | Load distribution system for distributing load among plurality of servers on www system |
6131067, | Sep 06 1996 | SNAPTRACK, INC | Client-server based remote locator device |
6134532, | Nov 14 1997 | TUMBLEWEED HOLDINGS LLC | System and method for optimal adaptive matching of users to most relevant entity and information in real-time |
6135646, | Oct 22 1993 | Corporation for National Research Initiatives | System for uniquely and persistently identifying, managing, and tracking digital objects |
6138155, | Mar 21 1997 | THE NIELSEN COMPANY US , LLC, A DELAWARE LIMITED LIABILITY COMPANY | Method and apparatus for tracking client interaction with a network resource and creating client profiles and resource database |
6148335, | Nov 25 1997 | International Business Machines Corporation | Performance/capacity management framework over many servers |
6148377, | Nov 22 1996 | GOOGLE LLC | Shared memory computer networks |
6151684, | Mar 28 1997 | QNAP SYSTEMS, INC | High availability access to input/output devices in a distributed system |
6167428, | Nov 29 1996 | Personal computer microprocessor firewalls for internet distributed processing | |
6189045, | Mar 26 1998 | International Business Machines Corp.; International Business Machines Corporation | Data type conversion for enhancement of network communication systems |
6191847, | Oct 01 1997 | Texas Instruments Incorporated | Fixed optic sensor system and distributed sensor network |
6208975, | Jul 24 1996 | TVL LP | Information aggregation and synthesization system |
6211782, | Jan 04 1999 | Vivint, Inc | Electronic message delivery system utilizable in the monitoring of remote equipment and method of same |
6212550, | Jan 21 1997 | Google Technology Holdings LLC | Method and system in a client-server for automatically converting messages from a first format to a second format compatible with a message retrieving device |
6222449, | Jul 21 1997 | Remote fish logging unit | |
6249836, | Dec 30 1996 | Intel Corporation | Method and apparatus for providing remote processing of a task over a network |
6253193, | Feb 13 1995 | Intertrust Technologies Corporation | Systems and methods for the secure transaction management and electronic rights protection |
6263358, | Jul 25 1997 | British Telecommunications public limited company | Scheduler for a software system having means for allocating tasks |
6308203, | Oct 14 1997 | Sony Corporation | Information processing apparatus, information processing method, and transmitting medium |
6334126, | Aug 26 1997 | Casio Computer Co., Ltd. | Data output system, communication terminal to be connected to data output system, data output method and storage medium |
6336124, | Oct 01 1998 | BCL COMPUTERS, INC | Conversion data representing a document to other formats for manipulation and display |
6345240, | Aug 24 1998 | Bell Semiconductor, LLC | Device and method for parallel simulation task generation and distribution |
6347340, | Feb 18 2000 | MBLOX INCORPORATED | Apparatus and method for converting a network message to a wireless transport message using a modular architecture |
6356929, | Apr 07 1999 | TRN Business Trust | Computer system and method for sharing a job with other computers on a computer network using IP multicast |
6370510, | May 08 1997 | WILMINGTON TRUST, NATIONAL ASSOCIATION, AS SUCCESSOR AGENT AND AS ASSIGNEE | Employment recruiting system and method using a computer network for posting job openings and which provides for automatic periodic searching of the posted job openings |
6370560, | Sep 16 1996 | NEW YORK, THE RESEARCH FOUNDATION OF STATE UNIVERSITY OF | Load sharing controller for optimizing resource utilization cost |
6374254, | Jun 30 1999 | International Business Machines Corporation | Scalable, distributed, asynchronous data collection mechanism |
6377975, | Mar 01 2000 | Genesys Telecommunications Laboratories, Inc | Methods and systems to distribute client software tasks among a number of servers |
6389421, | Dec 11 1997 | International Business Machines Corporation | Handling processor-intensive operations in a data processing system |
6393014, | Jun 03 1997 | AT&T MOBILITY II LLC | Method and system for providing data communication with a mobile station |
6415373, | Jan 12 1998 | CERBERUS BUSINESS FINANCE, LLC, AS COLLATERAL AGENT | Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner |
6418462, | Jan 07 1999 | Yongyong, Xu | Global sideband service distributed computing method |
6421781, | Apr 30 1998 | Unwired Planet, LLC | Method and apparatus for maintaining security in a push server |
6434594, | Mar 09 1999 | Intellisync Corporation | Virtual processing network enabler |
6434609, | Mar 16 1998 | CIDERA, INC | Comprehensive global information network broadcasting system and methods of distributing information |
6438553, | Dec 28 1998 | NEC Electronics Corporation | Distributed job integrated management system and method |
6463457, | Aug 26 1999 | Parabon Computation, Inc. | System and method for the establishment and the utilization of networked idle computational processing power |
6473805, | Jun 08 1998 | Symbol Technologies, LLC | Method and apparatus for intergrating wireless and non-wireless devices into an enterprise computer network using an interfacing midware server |
6477565, | Jun 01 1999 | YODLEE, INC | Method and apparatus for restructuring of personalized data for transmission from a data network to connected and portable network appliances |
6499105, | Jun 05 1997 | Hitachi, Ltd. | Digital data authentication method |
6516338, | May 15 1998 | ANDREAS ACQUISITION LLC | Apparatus and accompanying methods for implementing network servers for use in providing interstitial web advertisements to a client computer |
6516350, | Jun 17 1999 | International Business Machines Corporation | Self-regulated resource management of distributed computer resources |
6546419, | May 07 1998 | SAMSUNG ELECTRONICS CO , LTD , A KOREAN CORP | Method and apparatus for user and device command and control in a network |
6570870, | Jan 28 1999 | OATH INC | Method and system for making a charged telephone call during an Internet browsing session |
6574628, | May 30 1995 | Corporation for National Research Initiatives | System for distributed task execution |
6601101, | Mar 15 2000 | Hewlett Packard Enterprise Development LP | Transparent access to network attached devices |
6604122, | Nov 03 1998 | Telefonaktiebolaget LM Ericsson (publ) | Method and apparatus for evaluating a data processing request performed by distributed processes |
6611686, | Feb 09 1999 | SMITH, JOSEPH D , MR | Tracking control and logistics system and method |
6615166, | May 27 1999 | Accenture Global Services Limited | Prioritizing components of a network framework required for implementation of technology |
6643291, | Jun 18 1997 | Kabushiki Kaisha Toshiba | Multimedia information communication system |
6643640, | Mar 31 1999 | GOOGLE LLC | Method for performing a data query |
6654783, | Mar 30 2000 | BYTEWEAVR, LLC | Network site content indexing method and associated system |
6735630, | Oct 06 1999 | Intellectual Ventures I LLC | Method for collecting data using compact internetworked wireless integrated network sensors (WINS) |
6738614, | Jun 19 2000 | 1477.com Wireless, Inc. | Method and system for communicating data to a wireless device |
6742038, | Apr 07 2000 | Microsoft Technology Licensing, LLC | System and method of linking user identification to a subscriber identification module |
6757730, | May 31 2000 | CLOUD SOFTWARE GROUP, INC | Method, apparatus and articles-of-manufacture for network-based distributed computing |
6847995, | Mar 30 2000 | BYTEWEAVR, LLC | Security architecture for distributed processing systems and associated method |
6891802, | Mar 30 2000 | BYTEWEAVR, LLC | Network site testing method and associated system |
6963897, | Mar 30 2000 | BYTEWEAVR, LLC | Customer services and advertising based upon device attributes and associated distributed processing system |
7003547, | Mar 30 2000 | BYTEWEAVR, LLC | Distributed parallel processing system having capability-based incentives and associated method |
7020678, | Mar 30 2000 | BYTEWEAVR, LLC | Machine generated sweepstakes entry model and associated distributed processing system |
7082474, | Mar 30 2000 | BYTEWEAVR, LLC | Data sharing and file distribution method and associated distributed processing system |
7134073, | Jun 15 2000 | International Business Machines Corporation | Apparatus and method for enabling composite style sheet application to multi-part electronic documents |
7143089, | Feb 10 2000 | QUICK COMMENTS INC | System for creating and maintaining a database of information utilizing user opinions |
7269664, | Jan 14 2000 | Oracle America, Inc | Network portal system and methods |
20010014868, | |||
20010029613, | |||
20010044588, | |||
20020010757, | |||
20020018399, | |||
20020019584, | |||
20020019725, | |||
20020052778, | |||
20020065864, | |||
20020078075, | |||
20020133593, | |||
20020143729, | |||
20020188733, | |||
20020194251, | |||
20020194329, | |||
20020198957, | |||
20040043758, | |||
20040098449, | |||
20070011224, | |||
20090132649, | |||
20090138551, | |||
20090164533, | |||
20090171855, | |||
20090216641, | |||
20090216649, | |||
20090222508, | |||
20100036723, | |||
EP883313, | |||
WO114961, | |||
WO173545, | |||
WO114961, | |||
WO173545, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Apr 13 2001 | Niration Network Group, L.L.C. | (assignment on the face of the patent) | / | |||
May 01 2001 | HUBBARD, EDWARD A | UNITED DEVICES, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 012004 | /0544 | |
Aug 30 2007 | UNITED DEVICES, INC | UD LIQUIDATION, INC | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 029058 | /0609 | |
Aug 30 2007 | UNITED DEVICES, INC | UNIVA CORPORATION | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 020353 | /0187 | |
Feb 27 2008 | UD LIQUIDATION, INC , F K A UNITED DEVICES, INC | UNIVA CORPORATION | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 020593 | /0650 | |
Feb 27 2008 | UD LIQUIDATION, INC F K A UNITED DEVICES, INC | UNIVA CORPORATION | CORRECTION TO THE NATURE OF CONVEYANCE FROM CHANGE OF NAME TO CORRECTIVE CONFIRMATORY ASSIGNMENT FOR ASSIGNMENT RECORDED ON 03 04 08 IN REEL NO 020593 AND FRAME NO 0650 | 021976 | /0741 | |
Mar 20 2008 | UNIVA CORPORATION AKA UNITED DEVICES | NIRATION NETWORK GROUP, L L C | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 020831 | /0104 | |
Aug 12 2015 | NIRATION NETWORK GROUP, L L C | F POSZAT HU, L L C | MERGER SEE DOCUMENT FOR DETAILS | 037233 | /0651 | |
May 06 2016 | F POSZAT HU, L L C | Intellectual Ventures I LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 038514 | /0263 | |
Sep 25 2023 | Intellectual Ventures I LLC | INTELLECTUAL VENTURES ASSETS 195 LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 065015 | /0538 | |
Oct 05 2023 | INTELLECTUAL VENTURES ASSETS 195 LLC | AI-CORE TECHNOLOGIES, LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 065207 | /0371 | |
Feb 28 2024 | AI-CORE TECHNOLOGIES, LLC | BYTEWEAVR, LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 066639 | /0008 |
Date | Maintenance Fee Events |
Feb 23 2016 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Apr 04 2017 | ASPN: Payor Number Assigned. |
Apr 04 2017 | RMPN: Payer Number De-assigned. |
Feb 18 2020 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Mar 23 2024 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Sep 25 2015 | 4 years fee payment window open |
Mar 25 2016 | 6 months grace period start (w surcharge) |
Sep 25 2016 | patent expiry (for year 4) |
Sep 25 2018 | 2 years to revive unintentionally abandoned end. (for year 4) |
Sep 25 2019 | 8 years fee payment window open |
Mar 25 2020 | 6 months grace period start (w surcharge) |
Sep 25 2020 | patent expiry (for year 8) |
Sep 25 2022 | 2 years to revive unintentionally abandoned end. (for year 8) |
Sep 25 2023 | 12 years fee payment window open |
Mar 25 2024 | 6 months grace period start (w surcharge) |
Sep 25 2024 | patent expiry (for year 12) |
Sep 25 2026 | 2 years to revive unintentionally abandoned end. (for year 12) |