Abstract:
A system, method, and computer program product for increasing security of grid enabled computing environments. The system, method, and computer program product include: scheduling execution of a computing job; determining if an edge policy exists for the computing job; tracking said execution of the computing job; dividing the computing job into portions; assigning the portions of the computing job according to the edge policy; determining if there is an attempt to violate the edge policy; and prohibiting a violation of the edge policy.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The invention relates generally to managing grid enabled computing environments, and particularly to increasing the security of grid enabled computing environments by implementing an edge management system. 
     2. Description of the Related Art 
     Edge management relates to how broadly a given grid job should be able to expand across a computing infrastructure. A grid job is a computer processing job that is portioned out across a plurality of processors. As the grid job expands across different boundaries separating different computing environments, there is an increased risk that sensitive information will be processed on a node that is insufficiently secure. 
     Grid schedulers accept applications and jobs submitted by users and provide the mechanism to deploy such jobs and applications on the grid computing equipment based on scheduling policies. Grid schedulers currently utilize various security components to ensure information is processed in a sufficiently secure mode. For example, grid enabled computing environments use security standards for authentication such as those described in proposed standards such as open grid service infrastructure (OGSI). Or, a grid environment may use platform security standards for hardware and software such as in a Government certification. However, some grid applications may have security needs that even a certified platform cannot satisfy. Additionally, grid security is conventionally defined within the scheduling function, and as such, an error introduced when scheduling a grid job, or hundreds of grid jobs, may cause jobs to run in environments less secure than intended. 
     A conventional manner of implementing grid computing is to use a cluster of computers in a grid-like fashion. This enables computers to pool processing power. However, even within a single corporate organization, sharing resources can be difficult because two separate groups may own those different clusters, and each of the groups may use their own schedulers that apply a different set of rules. It is not easy to coordinate security policies across schedulers for different clusters. In situations where there are two, three or four different schedulers, if someone makes a mistake scheduling a job and does not give the job an appropriate level of security, there is nothing in place to prevent the job from being processed on an insufficiently secure node. 
     In a cluster form of grid computing, generally the scheduler is limited to the resources within that given cluster. If there is more than one cluster within an organization, there can be grid activity between clusters and schedulers. For example, scheduler A not only sends local jobs through scheduler A′s local cluster, scheduler A can also send work to other clusters within the organization. 
     The cluster configuration is not true grid computing, but rather is a quasi-form of grid computing or a grid-like environment. An example of a quasi-form of grid computing would be a cluster of computers in an accounting department of an organization that form a grid that does not expand outside of that particular cluster. A true grid computing environment is able to use resources outside of a particular cluster. 
     For example, when expanding beyond the grid-like environment discussed above, one subnet (an interconnected portion of a network sharing a network address, but distinguishable by a subnet) may contain two machines: one server with payroll records, and a second server that tests new application code. The first server would have more stringent edge/security requirements than the second. Conventional schedulers lack the security features to enable true grid computing. To prevent the more sensitive payroll information from being processed on the less secure second server, the need arises for a comprehensive edge manager for grid enabled computing environments. In addition, when using grid computing equipment that is external to an organization&#39;s computing environment, the management of security becomes even more critical than when using equipment that is part of the organization&#39;s own environment. If scheduler A issues an instruction to parallelize a job out to 1,000 nodes and there are only 400 nodes in-house, the 600 nodes outside the organization that are used must be carefully selected. 
     Most conventional schedulers lack the security features necessary to expand grids outside clusters. For example, OpenPBS (Portable Batch System), which is a freely available open source grid/cluster scheduler, does not enforce a security policy. OpenPBS uses the operating system security methods for user authentication (i.e., UNIX .rhosts file, which is not secure), access control lists, and firewall rules to restrict access to servers. 
     There are schedulers on the market today that include security as part of their scheduling policy. However, a flaw exists in the conventional scheduling mechanisms in their inability to ensure appropriate security is applied to a particular computing job. For example, in the situation where there are several different schedulers and somebody makes a mistake scheduling a job and does not provide the job with the appropriate level of security, there is nothing in place to prevent the job from being executed. The inventors have recognized the shortcomings of existing systems and have developed, in an exemplary embodiment of the present invention, an edge manager that would establish corporate level security policies and could prohibit a scheduler from executing a job submitted with an insufficient level of security by overriding the scheduler. 
     The present inventors recognized that the inadequate security offered by conventional schedulers is a factor favoring the use of grid-like environments, rather than true grid environments. 
     The present inventors also recognized that the increasing demand for computer processing resources has created a need for equipment that will better manage and maximize existing resources. Money could be saved by reducing the amount of computer equipment that is not being fully utilized. Rather than buying new, expensive, specialized equipment that has a lot of processing power, jobs could be distributed over a plurality of processors. Distributing jobs over a plurality of processors allows less expensive machines to be purchased and used. A system that securely uses a plurality of processors for a particular job also could increase the speed with which that job is completed. A job that would take three weeks could take only 24 hours if equipment to better manage existing processing resources existed. 
     Furthermore, no complete intra-site to inter-site solution has been developed that would manage, based on data security requirements, the extent to which a grid-job may parallelize outside of the local computing environment. Conventional systems manage the risk of processing secure information on an unsecure node by using a policy based edge manager that will not allow any grid enabled job to traverse the global grid beyond what is defined as secure for that particular job or job environment. The present invention would allow jobs that require a secure environment to run in a wider grid by providing a mechanism for addressing the security issue in a suitable manner. 
     SUMMARY OF THE INVENTION 
     An object of the present invention is to address the above-identified and other limitations of conventional grid environments. 
     In an exemplary embodiment, there is a method of edge management, including steps of: scheduling execution of a computing job; determining if an edge policy exists for the computing job; tracking the execution of the computing job; dividing the computing job into portions; assigning the portions of the computing job according to the edge policy; determining if there is an attempt to violate the edge policy; and prohibiting a violation of the edge policy. 
     In another exemplary embodiment, the method of edge management further includes a step of determining if an edge policy exists for the computing job each time a portion of the computing job is assigned to a node in a different computing environment. 
     In another exemplary embodiment, the step of prohibiting includes transmitting a command that ceases processing of data by a node that violates the edge policy. 
     In another exemplary embodiment, the step of prohibiting includes preventing or ceasing transmission of data to a node that violates the edge policy. 
     In another exemplary embodiment, the step of assigning includes transmitting a first agent to a computer assigned to process the computing job; transmitting a second agent to a scheduler of the computer assigned to process the computing job; transmitting information about the computer assigned to process the computing job to an edge manager; and causing the scheduler to override its existing policies to enforce the edge policy provided by the edge manager. 
     In another exemplary embodiment, the step of assigning includes placing a query to the computer assigned to process the computing job, wherein the responsive information about the computer assigned to process the computing job enables the edge manager to determine whether the assigned computer complies with the edge policy. 
     In another exemplary embodiment, the edge management policy is at least one of an application job policy, a cluster participation policy, a sever/platform policy, a specific IP/MAC address mapping policy, a source subnet/network policy, a source hostname/username policy, a number of hops to destination policy, a communications protocol policy, and an attenuation policy. 
     In another exemplary embodiment, the method of edge management is applied within a single computing environment. 
     In another exemplary embodiment, the method of edge management is applied across at least one of a global Internet, an Internet by country code, an Internet USA, a corporate network, a subnet, a cluster, and a server. 
     The present invention is also embodied in a system for edge management including a computing environment configured to communicate with a node outside of the computer environment through a network, the computing environment including: a scheduler configured to schedule execution of a computing job; and an edge manager configured to determine if an edge policy exists for the computing job, to track the execution of the computing job, to assign a portion of the computing job to the node according to the edge policy, to determine if there is an attempt to violate the edge policy, and to prohibit a violation of the edge policy by the node. 
     In another exemplary embodiment, the node is inside the computing environment. 
     In another exemplary embodiment, the edge manager includes a transmission device configured to transmit a command that controls the node, where the command prohibits the node from violating the edge policy. 
     In another exemplary embodiment, the edge manager includes a transmission device configured to transmit data to be processed by the node, where the transmission device prohibits or ceases transmission of data to prevent the node from violating the edge policy. 
     In another exemplary embodiment, the system further includes a transmission device configured to transmit a first agent of the edge manager to the node, where the first agent is configured to transmit information about the node to the edge manager. 
     In another exemplary embodiment of the system, the computing environment and node each operate with a scheduler, and the transmission device is further configured to transmit a second agent of the edge manager to the scheduler of the node, and the second agent enables the scheduler of the node to enforce the edge policy. 
     The present invention is also embodied in a computer configured to operate in a grid computing environment including: a scheduler configured to schedule execution of a computing job; and an edge manager configured to determine if an edge policy exists for the computing job, to track the execution of the computing job, to assign a portion of the computing job to a node according to the edge policy, to determine if there is an attempt to violate the edge policy, and to prohibit a violation of the edge policy by the node. 
     In another exemplary embodiment, the computer further includes a transmission device configured to transmit a command that controls a node assigned a portion of the computing job, where the command prohibits the node from violating the edge policy. 
     In another exemplary embodiment, the computer further includes a transmission device configured to transmit data to be processed by a node, where the transmission device prohibits or ceases transmission of data to prevent the node from violating the edge policy. 
     In another exemplary embodiment of the computer, the transmission device is further configured to transmit an agent of the edge manager to the node, and the agent is configured to transmit information about the node to the edge manager. 
     In another exemplary embodiment of the computer, the transmission device is further configured to transmit a second agent of the edge manager to a scheduler of the node to allow the scheduler of the node to enforce the edge policy. 
     The present invention is also embodied in a computer program product storing instructions for execution on a computer system, which when executed by the computer system, causes the computer system to perform a method of edge management. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       A more complete appreciation of the invention and many of the attendant advantages thereof will be readily obtained as the same becomes better understood by reference to the following detailed description when considered in connection with the accompanying drawings, wherein: 
         FIG. 1  is an example of edge management boundaries; 
         FIG. 2  is a diagram of edge policies in a grid environment; 
         FIG. 3  is a diagram of a hierarchy of edge policies; 
         FIG. 4  is a flow diagram of a method for edge management in a grid environment; 
         FIG. 5  is an exemplary global grid environment; and 
         FIG. 6  is a block diagram of a computer system upon which an embodiment of the present invention may be implemented. 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Referring now to the drawings, wherein like reference numerals designate identical or corresponding parts throughout the several views and more particularly to  FIG. 1  thereof, there is depicted an example of edge management boundaries. 
       FIG. 1  depicts how, in the absence of the invention described herein, an increasingly broadened edge policy for a particular grid job results in a less secure environment. This is especially true once a grid job has traversed all corporate networks and enters the Internet grid where compliance with corporate policy concerning security of computing environments is not easily achieved. In  FIG. 1 , reference numerals  1 - 9  denote different computing environments, with Internet Global  1  being the most liberal edge policy (i.e., least secure) and server  9  being the strictest (i.e., the most secure) computing environment. Arrows  10  and  11  show how security of a computing environment changes as edge policy shifts from most secure to least secure. In an exemplary embodiment where data security is paramount (as in many computing environments), edge management policies would be defined in regards to the characteristics of the computing resources to be used for particular jobs. The edge management policies would overrule any conflicting grid job scheduling policies. 
     The edge policies may contain inclusive rules, exclusive rules, or a combination of both, and may be executed based on one or more of hardware, operating system, or application/job. As an example, a global edge policy might provide that all jobs must only run on IBM&#39;s Advanced Interactive eXecution operating system (AIX). A job specific policy might additionally require that job X may only run on AIX version 5.2 or on a specific server type.  FIG. 2  depicts grid environment  20  that includes examples of edge policies described above. 
     In  FIG. 2 , the A computer environment  21  includes computers A 1  and A 2 . The A computer environment  21  has edge policy one, which provides that payroll jobs can only run on A computers. In  FIG. 2 , the C computer environment  22  includes computers C 1  and C 2 . The C computer environment has edge policy three, which is that C computer jobs must run on the local subnet. C 1  and C 2  are on different subnets. C 1  is on subnet 10.10.10.0 and C 2  is on subnet 10.10.20.0. Subnet 10.10.20.0 has its own edge policy (Edge Policy  2 ), which is that development jobs can run on all computers on subnet 10.10.20.0. 
     In an exemplary embodiment, a grid enabled payroll job is submitted through the scheduler, and the selected submission parameters specify a parallelism of six, or that the job should be executed across six computers. Although six computers in  FIG. 2  are grid enabled and available, edge policy one prohibits the job from traversing outside of the A computer environment  21 . 
     Edge policy  3  controls the C computers in  FIG. 2 . The C computers in  FIG. 2  have even a greater degree of edge restriction than edge policy  1 , in that only two C computers are available, each on a different subnet, and edge policy  3  dictates that C computers may not run jobs routed from other subnets. 
     Edge policy two of  FIG. 2  is a less restrictive edge policy than edge policy  3  (i.e., more computers are available to process a job under edge policy  2 ), where the development grid jobs are permitted to run on any available machine on the subnet. 
     Finally, edge policy four is the least restrictive of the policies in  FIG. 2  and permits capacity test jobs to be run on all available computers. 
     In an exemplary embodiment, when edge policies overlap, the more restrictive policy would always take precedence over the less restrictive. If a capacity test job were submitted on computer A 1  with a parallelism of six, edge policies three and four would overlap and computer C 2  would not participate because the job originated on a different subnet. In this embodiment, edge policy three, being more restrictive, would supersede edge policy four. In addition, the combination of edge policies three and four would override the scheduler policy which called for a parallelism of six, because the grid job would only be able to use five computers. 
     Many edge policies may be defined with a great variety of criteria taken into account. A weighted hierarchy of policy definitions can be created. In an exemplary embodiment, all criteria of all overlapping policies would have to be met in order for the resource to be used. In another exemplary embodiment, a hierarchical model could enforce the most restrictive policies or could enforce the least restrictive policies. The following are examples of edge manager criteria or policies. Each of these criteria could be applied on their own or combined with other criteria and enforced in accordance with the policies described above.
         Application Job Type   As in the previous examples, many edge policies are likely to be defined based on the grid application job type. Generally, applications that process sensitive data would have very restrictive edge policies. Other grid application jobs that do not deal with sensitive data may be permitted much broader edge policies.   Cluster Participation   If the computers are already part of a high performance computing cluster, a quasi grid (i.e., a policy that isolates these nodes from external grids) may be desirable.   Server/platform Type   Some platforms are highly customized and tuned for very specific purposes, in which case an exclusionary edge policy might be desired such that only a small subset of all grid job types would be permitted to execute on these platforms. For example, an edge policy could be to not use Pentium computers.   Specific IP/MAC Address Mapping   Rather than defining edge policies based on job type, edge policies may be defined by the specific job parallelism permitted based on the specific IP/MAC address that is executing or originating a particular grid job.   Source Subnet/Network   As discussed above, in an exemplary embodiment, edge definitions are based on source and/or target subnets/networks. For example, edge policy  2  in  FIG. 2  is based on a subnet that associates a particular group of computing nodes addressable by a common address, yet distinguishable by another subnet address.   Source Hostname/Username   In another exemplary embodiment, an edge policy uses the names of machines to define the edge for a particular job or job type. As an example, in a country-wide collaborative research effort, all participants name their machines in a specific manner, such as research — 1project — 6, etc. As a participating job executes on the logical grid, a scheduler scans every grid enabled computer in the country to find participating computers with conforming names.   Number of Hops to Destination   In another exemplary embodiment, an edge policy is a specific number of router or switch hops. If a subnet is known to require no more than two hops to route between any set of machines, even though a machine three hops away may seem to meet job or overlapping edge criteria, the subnet is excluded because the subnet is outside of the two hop limit in this particular edge policy.   Communications Protocol   An edge policy that uses communications protocol may be used to permit broad edge policies for specific job types. For example, a highly paralleled job is permitted to traverse the grid and execute on any machine running the TCP/IP protocol.   Attenuation   In another exemplary embodiment, the edge policy is hardware enabled. A hardware enabled edge policy may be used to secure a campus environment where jobs are not permitted to run outside the campus. Prior to executing a job on a machine that meets all the other edge policies, an attenuation test would be run against the target machine in order to determine the target machines real distance from the source machine, thereby ensuring that a machine outside of the campus is not being used.       

     The edge polices described above are merely exemplary of possible edge policies and are not intended to be an all-inclusive list. In light of the teachings of this patent document, one of ordinary skill in the art will recognize other examples of edge policies. 
     There are multiple reasons why it may not be desirable for a computer to participate in a grid, particularly one controlled by an outside organization. Possible reasons include quality of performance or sensitivity of data on the computer. In another exemplary embodiment, policies could be set that prevent a computer from being part of such an outside grid. 
     In embodiments of the present invention that involve an organization parallelizing jobs outside of the organization&#39;s own internal grid, the schedulers of the organization and the outside grid would need to be able to communicate with each other. For example, any computer running TCP/IP can easily communicate with another computer that is running TCP/IP. However, there are currently no standards for cross boundary scheduler coordination. If grid communications standards are developed, the present invention could utilize such standards. One of ordinary skill in the art would appreciate that the embodiments of the invention described herein are not limited by the communication protocols or methods used between the schedulers. Until such communication standards are established, a set of application program interfaces can be used to enable communications between unlike protocols. 
     In another exemplary embodiment, the edge manager is intended to override departmental policies set in grid schedulers and routers. Additional edge policies will evolve as necessary to address specific requirements introduced in the grid schedulers and routers. In  FIG. 3 , the individual department policies are a subset of and are controlled by the corporate level edge policies, which are the final authority. 
       FIG. 4  is a flowchart illustrating an embodiment of the present invention in which Edge management and scheduling functions are performed as software processes on a common computer, like that shown in  FIG. 6 . In step  400 , departmental policies are established for a grid job and stored on a computer&#39;s memory. In another embodiment, departmental policies include higher level corporate policies. Proceeding to step  402 , the grid job is scheduled by a grid scheduler module for execution. Proceeding to step  404 , execution of the grid job begins. Proceeding to step  406 , the edge manager determines whether an edge policy exists for a particular department. Proceeding to step  408 , if there is no edge policy in place, then the job is executed as scheduled. 
     In an alternative embodiment, the edge policy is applied every time a job moves to a different set of features, which are outside the scope of the policies originally defined. As an example of a job moving to a different set of features, if the degree of parallelism requested was 10, but only 8 nodes were initially available, the edge policy is applied to enable the use of the 8 available nodes instead of the requested 10. Then, when two more nodes became free, the job could use them, but only after applying the edge policy to the two added nodes. 
     If there is an edge policy in place, the process proceeds to step  410  where the edge manager tracks the execution of the job. Proceeding to step  412 , the grid job begins to parallelize in accordance with the scheduled policies. Before the grid job can parallelize, the scheduler must determine if a potential node is a candidate for the particular grid job. The scheduler communicates with the scheduler on the other machines and queries them. The query is related to any or all of the following and other possible criteria: protocol (i.e. determine if schedulers are interoperable); is there virus protection, how current is the virus protection; what kind of operating system is running; how much memory is available, etc. 
     In another embodiment, in step  412 , the edge manager transmits an agent to the node processing the job. The agent may be a daemon process, API, or a software module that can collect data with respect to specific grid devices and report back to the edge manager. The agent is transmitted to the node parallelized to process the grid job and this agent transmits information about the node back to the edge manager. There is also an agent transmitted to the scheduler of the node. This second agent passes the ability to track and enforce the edge polices to the scheduler of the node. The second agent keeps the scheduler from passing the grid job off to another node that does not satisfy the edge policies. If the scheduler attempts to pass the job off, the agent prevents that action or takes some preventive measures. In another embodiment, the agents can query potential nodes and their schedulers and relay that information to the edge manager, which would manage the resources remotely. 
     The process proceeds to step  414  where the edge manager determines if a violation of an edge policy is attempted. If there is no violation of the edge policy, the process continues on to step  416  and the job continues to completion. If a violation is attempted, the process proceeds to step  420  and the edge manager prohibits the edge policy violation. In another embodiment, the agent sent out by the edge manager can prohibit the violation. The violation may be prohibited by transmitting a command or by stopping the transmission of data. In yet another embodiment, the edge manager may first allow the transmission of data to proceed and then make the determination as to whether an edge policy is being violated. In this case, if the edge manager determines that an edge policy is indeed being violated, transmission is ceased by the edge manager itself or by its issuance of a corresponding command to cease transmission. 
     In another exemplary embodiment, the edge manager can operate within a single cluster. For example, if a corporate policy is that payroll machines run only payroll jobs and someone inadvertently scheduled the payroll machines to be part of a cluster job, the edge manager would prohibit that from happening. In this embodiment, there is local routing rather than remote routing of the job to be paralellized out. 
       FIG. 5  depicts a global grid environment. Company A has a group of computers  51   a - 51   d  linked together to form a grid-like cluster. Depending on the edge policies of Company A, grid jobs can use computers outside of the cluster existing within Company A, and use the Internet  52  to access computer processing resources outside of Company A. In an exemplary embodiment, a grid job originating from Company A may be executed on computers  54   a - 54   d  of University X. The edge manager of Company A ensures that the computers of University X comply with the edge policies established at Company A. In an exemplary embodiment, Company A implements an edge policy that allows a grid job to parallelize out to any computer not operating with a Pentium processor. Before the job is parallelized out, the edge manager of Company A will ensure that the processors on computers  54   a - 54   d  do not have Pentium processors. The edge manager can monitor computers  54   a - 54   d , or in another exemplary embodiment, the edge manager can implant agents on the computers  54   a - 54   d  and have the agent monitor the computers. 
     In another exemplary embodiment, University X operates its own edge manager. The edge manager of University X ensures that the computers  54   a - 54   d  operate in compliance with the edge policies for outside computers linking to inside computers  54   a - 54   d  established by University X. 
     Grid jobs do not have to be parallelized out to more than one computer or computers of other organizations. Instead they may run on a single computer. In another exemplary embodiment, an individual computer  53  that is connected to the Internet can be used to process a grid job originating from Company A. The edge manager or the edge manager&#39;s agent will ensure that the computer  53  complies with the edge policies established by Company A. 
     In another exemplary embodiment, the edge manager continues to monitor the execution of the computing job for compliance with the edge policy through completion of the computing job, even if the scheduler enforces said edge policy. 
       FIG. 5  uses the Internet as an example of a network. The network could be the global Internet, the Internet by country code, Internet USA, a corporate network (where different organizations could be different departments within a single organization), a subnet, a cluster, a backup server or a server. 
       FIG. 6  illustrates a computer system  1201  upon which an embodiment of the present invention may be implemented. The computer system  1201  includes a bus  1202  or other communication mechanism for communicating information, and a processor  1203  coupled with the bus  1202  for processing the information. The computer system  1201  also includes a main memory  1204 , such as a random access memory (RAM) or other dynamic storage device (e.g., dynamic RAM (DRAM), static RAM (SRAM), and synchronous DRAM (SDRAM)), coupled to the bus  1202  for storing information and instructions to be executed by processor  1203 . In addition, the main memory  1204  may be used for storing temporary variables or other intermediate information during the execution of instructions by the processor  1203 . The computer system  1201  further includes a read only memory (ROM)  1205  or other static storage device (e.g., programmable ROM (PROM), erasable PROM (EPROM), and electrically erasable PROM (EEPROM)) coupled to the bus  1202  for storing static information and instructions for the processor  1203 . 
     The computer system  1201  also includes a disk controller  1206  coupled to the bus  1202  to control one or more storage devices for storing information and instructions, such as a magnetic hard disk  1207 , and a removable media drive  1208  (e.g., floppy disk drive, read-only compact disc drive, read/write compact disc drive, compact disc jukebox, tape drive, and removable magneto-optical drive). The storage devices may be added to the computer system  1201  using an appropriate device interface (e.g., small computer system interface (SCSI), integrated device electronics (IDE), enhanced-IDE (E-IDE), direct memory access (DMA), or ultra-DMA). 
     The computer system  1201  may also include special purpose logic devices (e.g., application specific integrated circuits (ASICs)) or configurable logic devices (e.g., simple programmable logic devices (SPLDs), complex programmable logic devices (CPLDs), and field programmable gate arrays (FPGAs)). 
     The computer system  1201  may also include a display controller  1209  coupled to the bus  1202  to control a display  1210 , such as a cathode ray tube (CRT), for displaying information to a computer user. The computer system includes input devices, such as a keyboard  1211  and a pointing device  1212 , for interacting with a computer user and providing information to the processor  1203 . The pointing device  1212 , for example, may be a mouse, a trackball, or a pointing stick for communicating direction information and command selections to the processor  1203  and for controlling cursor movement on the display  1210 . In addition, a printer may provide printed listings of data stored and/or generated by the computer system  1201 . 
     The computer system  1201  performs a portion or all of the processing steps of the invention in response to the processor  1203  executing one or more sequences of one or more instructions contained in a memory, such as the main memory  1204 . Such instructions may be read into the main memory  1204  from another computer readable medium, such as a hard disk  1207  or a removable media drive  1208 . One or more processors in a multi-processing arrangement may also be employed to execute the sequences of instructions contained in main memory  1204 . In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions. Thus, embodiments are not limited to any specific combination of hardware circuitry and software. 
     As stated above, the computer system  1201  includes at least one computer readable medium or memory for holding instructions programmed according to the teachings of the invention and for containing data structures, tables, records, or other data described herein. Examples of computer readable media are compact discs, hard disks, floppy disks, tape, magneto-optical disks, PROMs (EPROM, EEPROM, flash EPROM), DRAM, SRAM, SDRAM, or any other magnetic medium, compact discs (e.g., CD-ROM), or any other optical medium, punch cards, paper tape, or other physical medium with patterns of holes, a carrier wave (described below), or any other medium from which a computer can read. 
     Stored on any one or on a combination of computer readable media, the present invention includes software for controlling the computer system  1201 , for driving a device or devices for implementing the invention, and for enabling the computer system  1201  to interact with a human user (e.g., print production personnel). Such software may include, but is not limited to, device drivers, operating systems, development tools, and applications software. Such computer readable media further includes the computer program product of the present invention for performing all or a portion (if processing is distributed) of the processing performed in implementing the invention. 
     The computer code devices of the present invention may be any interpretable or executable code mechanism, including but not limited to scripts, interpretable programs, dynamic link libraries (DLLs), Java classes, and complete executable programs. Moreover, parts of the processing of the present invention may be distributed for better performance, reliability, and/or cost. 
     The terms “computer readable medium” and “computer program product” as used herein refers to any medium that participates in providing instructions to the processor  1203  for execution. A computer readable medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical, magnetic disks, and magneto-optical disks, such as the hard disk  1207  or the removable media drive  1208 . Volatile media includes dynamic memory, such as the main memory  1204 . Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that make up the bus  1202 . Transmission media also may also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications. 
     Various forms of computer readable media may be involved in carrying out one or more sequences of one or more instructions to processor  1203  for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions for implementing all or a portion of the present invention remotely into a dynamic memory and send the instructions over a telephone line using a modem. A modem local to the computer system  1201  may receive the data on the telephone line and use an infrared transmitter to convert the data to an infrared signal. An infrared detector coupled to the bus  1202  can receive the data carried in the infrared signal and place the data on the bus  1202 . The bus  1202  carries the data to the main memory  1204 , from which the processor  1203  retrieves and executes the instructions. The instructions received by the main memory  1204  may optionally be stored on storage device  1207  or  1208  either before or after execution by processor  1203 . 
     The computer system  1201  also includes a communication interface  1213  coupled to the bus  1202 . The communication interface  1213  provides a two-way data communication coupling to a network link  1214  that is connected to, for example, a local area network (LAN)  1215 , or to another communications network  1216  such as the Internet. For example, the communication interface  1213  may be a network interface card to attach to any packet switched LAN. As another example, the communication interface  1213  may be an asymmetrical digital subscriber line (ADSL) card, an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of communications line. Wireless links may also be implemented. In any such implementation, the communication interface  1213  sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information. 
     The network link  1214  typically provides data communication through one or more networks to other data devices. For example, the network link  1214  may provide a connection to another computer through a local network  1215  (e.g., a LAN) or through equipment operated by a service provider, which provides communication services through a communications network  1216 . The local network  1214  and the communications network  1216  use, for example, electrical, electromagnetic, or optical signals that carry digital data streams, and the associated physical layer (e.g., CAT 5 cable, coaxial cable, optical fiber, etc). The signals through the various networks and the signals on the network link  1214  and through the communication interface  1213 , which carry the digital data to and from the computer system  1201  maybe implemented in baseband signals, or carrier wave based signals. The baseband signals convey the digital data as unmodulated electrical pulses that are descriptive of a stream of digital data bits, where the term “bits” is to be construed broadly to mean symbol, where each symbol conveys at least one or more information bits. The digital data may also be used to modulate a carrier wave, such as with amplitude, phase and/or frequency shift keyed signals that are propagated over a conductive media, or transmitted as electromagnetic waves through a propagation medium. Thus, the digital data may be sent as unmodulated baseband data through a “wired” communication channel and/or sent within a predetermined frequency band, different than baseband, by modulating a carrier wave. The computer system  1201  can transmit and receive data, including program code, through the network(s)  1215  and  1216 , the network link  1214  and the communication interface  1213 . Moreover, the network link  1214  may provide a connection through a LAN  1215  to a mobile device  1217  such as a personal digital assistant (PDA) laptop computer, or cellular telephone. 
     Obviously, numerous modifications and variations of the present invention are possible in light of the above teachings. For example, the present invention can be used for identification, management of grid enabled resources, and routing of distributed applications. It is therefore to be understood that within the scope of the appended claims, the invention may be practiced otherwise than as specifically described herein.