Abstract:
Redirecting a client request for digital information to a server by selecting a server based on client location. The client location derived from a query to a client application such as a modem dial-up application or a mobile phone Global Positioning System. The client location information being used in combination with a listing of groups of servers as well as a listing of servers having the requested digital information to select a preferred server satisfying geographical preferences.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS  
       [0001]    This is a continuation in part of U.S. Ser. No. 09/565,400 “METHOD TO OPTIMIZE THE NETWORK DISTRIBUTION OF DIGITAL INFORMATION BASED ON HIERARCHICAL GROUPING OF SERVER TOPOLOGY AND CODE DISTRIBUTION” filed on May 5, 2000. 
     
    
     
       FIELD OF INVENTION  
         [0002]    The subject of the present invention in general pertains to computer systems including servers and clients communicating over a network. The invention more particularly relates to efficiently distributing digital information such as Software programs from servers to clients.  
         BACKGROUND OF THE INVENTION  
         [0003]    The industry utilizes a wide variety of software products from a wide variety of sources, designed for a wide variety of environments. In some cases, software applications assist in organizing these products in order to provide consistency among users. As an example, a company may wish to restrict the number and version of applications the end users are using in the company in order to more efficiently manage their IT resources. Program products are needed that provide the service of managing software applications including distributing appropriate versions and updates. FIG. 2 and FIG. 3 depict a high level view of the download process of prior art systems. A list of servers is presented to a user  901  who selects one for downloading a package of digital data  801 . If the download is not successful  902 , the user can select another server if available. One such product (ISSI) is described as follows:  
           [0004]    The IBM Standard Software Installer (ISSI) is a product used to provide a wide variety of program applications within an enterprise to distributed users FIG. 1. The product is described as it might be used within the IBM corporation for example. The product could also be used in any other entity with modifications that would be obvious to one skilled in the art. This solution is the initial step towards a comprehensive Web-based electronic software distribution solution. The next step includes a dynamic package catalog and the integration of the TME10 SD for FW as the software distribution engine 1 2 3. This will allow management of the desktop via the other integrated Tivoli applications.  
           [0005]    The architectures and, in many aspects, the actual implementation employed in this solution largely follow the Operating System Platforms (OSP) software distribution architectures and implementations that are currently exploited for the Client for e-business Windows 95, Windows NT 4, Windows 2000, Windows XP, Linux, and OS/2 offerings.  
           [0006]    ISSI Solution Highlights:  
           [0007]    A. Easy to use interface for the end-user  
           [0008]    B. Automated installations  
           [0009]    1. Response file driven installations; Minimized end user intervention; configuration consistency; reduced end-user install support (doc, education); reduced end-user induced errors.  
           [0010]    a. Products with native support for response files  
           [0011]    b. OSP&#39;s MagicWin installation technology for products that do not support response files natively  
           [0012]    2. Pre-prompting for installation variables; a subset of the total variables required for the package install, predetermined values for others; end-user selects options and install proceeds without further intervention  
           [0013]    C. OSP Packaging Architecture Based Packages  
           [0014]    1. Delivery tool independent; Reusable for all OSP solutions (TME10 SD for AIX, TME10 SD for Framework, Static and Dynamic Web, CD source installs).  
           [0015]    D. Consistent technology and package install behavior across all Client for e-business deliverables.  
           [0016]    1. Leveraged service delivery center skill  
           [0017]    2. Leveraged end-user education/expectations  
           [0018]    E. Infrastructure  
           [0019]    1. Established package distribution process  
           [0020]    2. Leverage of existing service delivery center infrastructure  
           [0021]    3. TCP/IP based offering  
           [0022]    4. Multiple servers, selected based on topological closeness to client  
           [0023]    5. After the “One-time client setup” is run, all support code and configuration files that reside on the client are automatically kept current from the server  
           [0024]    a. Server targets definitions  
           [0025]    b. Installer programs  
           [0026]    c. Userids/Passwords for server access  
           [0027]    6. Multiple servers support based on Virtual Private Network (VPN) information. According to the World Wide Web URL “SearchTech.Target.com” a Virtual Private Network (VPN) is a way to use a public telecommunication infrastructure, such as the Internet, to provide remote offices or individual users with secure access to their organization&#39;s network. A virtual private network can be contrasted with an expensive system of owned or leased lines that can only be used by one organization. The goal of a VPN is to provide the organization with the same capabilities, but at a much lower cost.  
           [0028]    A VPN works by using the shared public infrastructure while maintaining privacy through security procedures and tunneling protocols such as the Layer Two Tunneling Protocol (L2TP). In effect, the protocols, by encrypting data at the sending end and decrypting it at the receiving end, send the data through a “tunnel” that cannot be “entered” by data that is not properly encrypted. An additional level of security involves encrypting not only the data, but also the originating and receiving network addresses. (FIG. 1) Illustrative Web Shopping Server Topology  
           [0029]    Web “Master” Server  
           [0030]    The Master URL (w3.ibm.com/download/standardsoftware) is hosted by the corporate Web support organization (maintainers of the w3.ibm.com URL). This will provide a single logical server presence and take advantage of the redundancy and load balancing that is provided to all w3.ibm.com hosted web pages. The Master web server will be established by OSP and the Global Projects Solutions (GPS) project office.  
           [0031]    ISSI Pages:  
           [0032]    The ISSI pages follow the IBM Intranet page standards ensuring a consistent look and feel with other pages hosted on the IBM intranet (w3.ibm.com). Key page destinations within the ISSI “site” are directly accessible from every ISSI page via navigational tabs (NavTab) on the page mastheads for planning for and deploying the ISSI Web based shopping solution.  
           [0033]    The hierarchy of the ISSI shopping pages is:  
           [0034]    I. Home/Overview  
           [0035]    A. FAQ (available from every page via NavTab)  
           [0036]    B. User&#39;s Guide (available from every page NavTab)  
           [0037]    C. Client Setup  
           [0038]    D. Geography Page  
           [0039]    E. Operating System Catalog (available from every page NavTab within Geography)  
           [0040]    1. Package Links  
           [0041]    2. Package Information Page  
           [0042]    3. Package Prompt and Install Page  
           [0043]    A novel method for selecting a server to handle a client request for digital data is described in “METHOD, APPARATUS AND PROGRAM PRODUCT TO OPTIMIZE THE NETWORK DISTRIBUTION OF DIGITAL INFORMATION BASED ON HIERARCHICAL GROUPING OF SERVER TOPOLOGY AND CODE DISTRIBUTION” U.S. patent application Ser. No. 09/565,400 filed May 5, 2000 assigned to IBM and is hereby incorporated by reference in the present application.  
         SUMMARY OF THE INVENTION  
         [0044]    It is an object of this invention to provide digital data to a client computer from a preferred server using geographical information retrieved from the client computer.  
           [0045]    It is another object of the invention to determine a preferred server from a group of servers based on proximity of the servers to a client computer.  
           [0046]    It is yet another object of the invention to determine a preferred server from a group of servers based on availability of the server.  
           [0047]    It is still another object of the invention to provide digital data to a client from a default server if no preferred server is found.  
           [0048]    It is further an object of the invention to provide server information relating subnets or domains to servers in order to determine the preferred server.  
           [0049]    It is further an object of the invention to provide server information relating Virtual Private Network (VPN) internal IP address ranges to servers in order to determine the preferred server.  
           [0050]    It is lastly an object of the invention to provide server information relating availability of required digital data at the servers.  
           [0051]    These and other objects, features and advantages of the invention will be apparent to those skilled in the art in view of the following detailed description and accompanying drawings. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0052]    The subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. The invention, however, both as to organization and method of practice, together with further objects and advantages thereof, may best be understood by reference to the following description taken in connection with the accompanying drawings in which:  
         [0053]    [0053]FIG. 1 is a high level schematic diagram of a Web Shopping Server network;  
         [0054]    [0054]FIG. 2 illustrates a high level flowchart of the prior art;  
         [0055]    [0055]FIG. 3 illustrates prior art ISSI flowchart of the download function;  
         [0056]    [0056]FIG. 4 illustrates an example redirection algorithm of an embodiment of the invention;  
         [0057]    [0057]FIG. 5 illustrates an example attempt group sub-process of the invention;  
         [0058]    [0058]FIG. 6 illustrates an example attempt other groups sub-process of an embodiment of the invention; and  
         [0059]    [0059]FIG. 7 illustrates an example VPN sub-process of the invention. 
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0060]    The ISSI product solves the problem by providing an algorithm that utilizes a set of predefined hierarchies to determine a hierarchy of servers capable of efficiently supplying the required software to the client end user.  
         [0061]    Redirection to Image Staging Servers  
         [0062]    The Web Master server  4  contains a set of tables that are used to identify the image staging server (defined in section “Staging Server”) to be used for a package installation. The first table used is the image staging server redirection table (described in Table 3 “Image Staging Server Redirection Table Specification”). The table, which defines the global image staging server  3  topology, specifies the following:  
         [0063]    A. Each ISSI image staging server.  
         [0064]    B. Domain specific server groups.  
         [0065]    C. Subnet specific server groups.  
         [0066]    D. Subnet range server groups.  
         [0067]    E. VPN internal IP address range server groups (referred to as VPN server groups).  
         [0068]    F. SDC default server groups.  
         [0069]    G. A master default server group.  
         [0070]    H. A list of default subnet masks.  
         [0071]    The table  503  is maintained by OSP with information supplied by service delivery center (SDC) representatives. The table is used by the OSP installation programs to identify the server to be used for a specific package installation. The decision is based on the target machine&#39;s  5  TCP/IP domain name, the subnet portion of its IP address, or VPN information. In general, the staging server redirection algorithm uses the domain, subnet, or VPN information to identify a server group that is geographically close to the client machine. It randomly selects a server from that server group to perform the installation. The algorithm is described in detail in section “Image Staging Server Redirection Algorithm”.  
         [0072]    SDC representatives provide OSP with the staging server  3  and server group information required to define their SDC&#39;s topology. For locations that define TCP/IP domains based on specific geographical locations, domain specific server groups are the preferred method for identifying the candidate servers to be used for deliveries to their clients. For locations were TCP/IP domains are spread over wide or scattered geographical areas, subnet specific and subnet range server groups are used (in that order). Subnet specific server groups may represent a class B or class C subnet. For remote users connected to an Internet Service Provider (ISP) network accessing the corporate network via a VPN client, VPN server groups are used. SDC representatives may also define a SDC default server group. The SDC default server group is associated with the corresponding SDC domain, subnet, subnet range, or VPN server groups. It is used when none of the servers in a domain, subnet, subnet range, or VPN server group can be used to deliver a package (see section “Image Staging Server Redirection Algorithm”). The SDC representative may also specify the “SDC default group message” that is displayed to the customer before a SDC default server group is used. When defining the SDC default group, the SDC representative specifies whether the master default server group is to be used in the case that none of the servers in the SDC default group can be used to install the package.  
         [0073]    The table  503  contains a special server group, the master default server group, which is used in two circumstances: (1) when no domain, subnet, subnet range, or VPN server group matches a client&#39;s IP/VPN information, or (2) when no server in a SDC default server group can be used to deliver a package. The master default server group is guaranteed to contain at least one OSP owned server that contains all production ISSI packages.  
         [0074]    In addition to the image server redirection table, the Web master server contains a number of package server availability tables (described in Table 5 “Package Server Availability Tables”). The server contains one table per ISSI package. Each availability table contains the names of the staging servers that contain the package. The availability tables are generated by an agent which periodically connects to every staging server to discover its packages. In general, the staging server redirection algorithm uses the corresponding package server availability table to identify the servers within a selected server group that contain the respective package.  
         [0075]    Image Staging Server Redirection Algorithm  
         [0076]    The OSP staging server redirection algorithm (FIGS. 4, 5 and  6 ) follows:  
         [0077]    1. Obtain the target machine&#39;s TCP/IP address, subnet mask and domain. Using the IP address and subnet mask, determine the target machine&#39;s subnet  501 .  
         [0078]    2. Retrieve  502  the image staging server redirection table  503  and the corresponding package server availability table  504 .  
         [0079]    3. Using the image staging server redirection table  503 , identify the server group to be used as the “group of candidate servers”. First, look for a matching subnet specific server group  505 . If none is found, then look for a subnet range server group that includes target machine&#39;s subnet  511 . If none is found, then look for a domain specific server group  507 . If none is found, then look for a VPN server group  702  (for details, see “Redirecting VPN Clients” below). If none is found, then look for a class B subnet  709  (for details, see “Class B Subnet Logic” below). If none is found  712 , then use the master default server group  509 .  
         [0080]    4. Using the package server availability table  504 , identify the servers in the group of candidate servers that contain the package  610 . Remove servers that do not contain the package from the group of candidate servers  610 .  
         [0081]    5. Randomly choose a server from the group of candidate servers  611 . If a failure occurs connecting to the server or downloading the package image from the server  620 , then the chosen server is excluded from the group of candidate servers  612 . If the group of candidate servers is exhausted  620 , then proceed with the next step  614 . Otherwise, repeat this step  611 .  
         [0082]    6. If none of the servers in the group of candidate servers can be used to successfully install the product  615 , then determine the type of default server group specified for the group of candidate servers (by inspecting keyword “default_group”)  615 . Proceed as follows depending on the type of default server group specified:  
         [0083]    a) If no default server group is specified (“default_group=NONE”), then the installation can not be performed  616 . If the group of candidate servers is the master default group, then no default server group will be specified for it. Note that the master default server group is the last server group that can possibly be attempted, so it must be specified with no default group.  
         [0084]    b) If a SDC default server group is specified (“default_group=default_&lt;SDC reference&gt;”), then repeat steps 4-6  617  with the SDC default server group as the group of candidate servers. If an SDC default group message is available, the message is first displayed to inform the user than an SDC default group is about to be used.  
         [0085]    c) If the master default server group is specified (“default_group=default”), then repeat steps 4-6  617  with the master default server group as the group of candidate servers. A standard message is first displayed to inform the user that the master default group is about to be used.  
         [0086]    Redirecting VPN Clients:  
         [0087]    Referring to FIG. 7, Redirection of Virtual Private Network clients is accomplished by: (1) obtaining the client&#39;s internal IP address, and (2) identifying a VPN internal IP address range server group that includes the internal IP address. The ISSI client code uses two methods to discover the client&#39;s internal IP address. The first method involves communicating with the MTS Global Net Client, IBM&#39;s standard Client for e-business VPN client, via the MTS API  750 . The second method involves requesting the internal IP address from servers listed in section IPAddrQueryServers of the ISSI routing table  753 . The server requests are made by sending an HTTP transaction to either a Web page containing a server side include or a CGI script. The server request method and the corresponding Web page or CGI script are specified in the ISSI routing table for each server. The server side include and the CGI script query environment variable REMOTE_ADDR, which contains the client&#39;s IP address as viewed by the Web server, and returns the value to the ISSI client code. The ISSI client code compares the “candidate” VPN internal IP address to the target machine&#39;s “locally obtained” IP address  751 / 755 . If the values are different, then the ISSI client code looks for a VPN internal IP address range server group that includes the VPN internal IP address  752 / 756 .  
         [0088]    Class B Subnet Logic  
         [0089]    The ISSI routing table contains a list of default subnet masks. For each default subnet mask, use the target machine&#39;s TCP/IP address and the default subnet mask to create a “class B subnet”. Then, look for a corresponding subnet specific server group. If none is found, look for a subnet range server group that includes the target machine&#39;s class B subnet.  
         [0090]    ISSI CGI  
         [0091]    The ISSI master server has a CGI script defined to process end-user input from the Web interface. This input is entered by the end-user on the specific package installation page. The CGI uses the end-user input to construct a package parameter file (example Table x1) that describes the package that is to be installed and key customization options selected for the target machine. In a preferred embodiment, each package that is available for installation through the Web based shopping solution will have a corresponding package parameter file created by the CGI on the Master Web server. This file contains information to signal the package installer about the package that has been selected for installation. Any configuration information specified by the end-user is included in this file by the server CGI script. This file has the format of a Windows 3.x style INI file.  
                         TABLE 1                       Example Package Parameter File Contents:                                [parameters]           deliverymethod=   Type of delivery; one of: staticweb,           dynamicweb, Tiv, NVDM       globalname=   Token based package descriptor       pkgname=   Descriptive name of package       nos=   Network operating system to use to access           the image server           (CopyLocal, RemoteMount, NFS, FTP, NTS...);           Overrides clients WEB.INI.       LocalStgPath=   Directory on the client where the product           images will be staged to when           NOS=FTP/HTTP       [First Contact       server]       servername=   Fully qualified TCPIP name of the first           contact server       nos=   Transport method for obtaining the image           server redirection table: NFS, FTP, HTTP       remoteserverpath=   Path to the image server redirection           table       key=   Flag indicating the encryption level of           key1 and key2 (00=key1/key2 plain text,           11= key1/key2 Level 1 encrypted)       key1=   Userid for access to the first contact           server (if nos=FTP)       key2=   Password for access to the first contact           server (if nos=FTP)       [responses]       &lt;response   1-“n” response descriptors and responses       descriptor&gt;=   that will be used to create the           installation response file for the           package.                  
 
         [0092]    Sample Package Parameter File:  
         [0093]    [parameters] 
         [0094]    nos=NFS  
         [0095]    deliverymethod=staticweb  
         [0096]    pkgname=Lotus Notes 4.53a  
         [0097]    globalname=LOT.LNC_EN.W32.1NSTALL.CLIENT_W32.PLAT.REF.453000.A  
         [0098]    [First Contact server] 
         [0099]    servername=d02ftp001.southbury.ibm.com  
         [0100]    nos=ftp  
         [0101]    remoteserverpath=/home/ospwebc1/swdist/repos  
         [0102]    key=11  
         [0103]    key1=xxxxx  
         [0104]    key2=xxxxx  
         [0105]    [responses] 
         [0106]    LNC45300_installdrive=C  
         [0107]    username=IBM Employee  
         [0108]    companyname=IBM  
         [0109]    Table 2 (Example WEB.INI File Contents):  
         [0110]    The WEB.INI file has the format of a Windows 3.x style INI file and resides on the software distribution target. It has two possible stanzas (sections). The stanzas and respective keys follow:  
                                                   [Stanza]/Key name   Description                           [ImageServer]               dllName=   Name of the image server dll for OS/2 and               16 bit windows           dllName32=   Name of the image server dll for 32 bit               windows           ServerName=   Fully qualified TCPIP name of the first               contact server           Nos=   Transport method for obtaining the image               server redirection table: FTP, HTTP           LocalStgPath=   Directory on the client where the product               images will be staged to when NOS=FTP           RemoteServerPath=   Path to the image server redirection table           key=   Flag indicating the encryption level of               key1 and key2 (00=key1/key2 plain text,               11= key1/key2 Level 1 encrypted)           key1=   Userid for access to the first contact               server (if nos=FTP)           key2=   Password for access to the first contact               server (if nos=FTP)           [LogFiles]           TrimLogFile=   Should the OSP log file be trimed to keep               it from growing too big ? (yes/no)           MaxLogFileSize=   Maximum size for the log file in bytes.                      
 
         [0111]    Sample WEB.INI File:  
         [0112]    [imageserver] 
         [0113]    dllname32=pw32gis.dll  
         [0114]    servername=d02ftp001.southbury.ibm.com  
         [0115]    nos=ftp  
         [0116]    remoteserverpath=/home/ospwebc1/swdist/repos  
         [0117]    key=11  
         [0118]    key1=xxxxx  
         [0119]    key2=xxxxx  
         [0120]    REM Uncomment localStgPath and set it to the path you want FTP to use for temp space.  
         [0121]    REM Only do this if you need to force it to a specific drive.  
         [0122]    REM localStgPath=c:\swd  
         [0123]    [logfiles] 
         [0124]    trimlogfile=yes  
         [0125]    maxlogfilesize=50000  
         [0126]    Table 3 (Example Staging Server Redirection Table Contents):  
         [0127]    The image server redirection table has the format of a Windows 3.x style INI file. It has six types of stanzas (sections):  
         [0128]    1. Definition of the logging server and script to execute to perform log function on that server.  
         [0129]    2. Definition of default server settings.  
         [0130]    3. Definition of default subnet masks (for use by the ISSI routing algorithm to create candidate class B subnets).  
         [0131]    4. A list of servers from which ISSI may request clients&#39; VPN internal IP addresses.  
         [0132]    5. A list of servers to service a particular IP address, TCPIP domain, IP subnet, IP subnet range, or VPN internal address range. The section name is a target&#39;s IP address, TCPIP domain name, IP subnet value, IP subnet value range, VPN internal address range, or the name of a default server group. The key values are fully qualified TCP/IP names of the servers for this set of clients.  
         [0133]    6. Image server section that defines the access method details for each server  4 .  
                                   [Stanza]/Key name   Description                   [HTTPLogServer]           ServerName=   The fully qualified TCPIP name of the HTTP           server to which web installation event           logging should be performed.       ScriptName=   The full path name of the CGI script used           to log web installation events.       [DefaultServerSettings]       ftpDataMode=   The FTP data mode used by ISSI (active or           passive).       [DefaultSubnetMasks]       numDSN=   Number of default subnet masks (for use by           the ISSI routing algorithm to create           candidate class B subnets).       dsnX=   Default subnet mask X (for use by the ISSI           routing algorithm to create candidate           class B subnets).       [IPAddrQueryServers]   List of servers from which ISSI may           request clients&#39; VPN internal IP           addresses.       serverX=   ServerX from which ISSI may request           clients&#39; VPN internal IP addresses.       typeX=   Type of request that may be sent to           serverX, i.e., SSI (server side include)           or CGI (Common Gateway Interface).       filenameX=   The name of the Web page or CGI script           that will handle the request at serverX.       [&lt;server group   The name for one of a variety of server       name&gt;]   group types, including: single IP address,           IP subnet, IP subnet range (i.e., [SUB-           &lt;starting IP subnet&gt;-&lt;ending IP subnet]),           IP domain name, VPN internal IP address           range (i.e., [VPN-&lt;starting IP address&gt;-           &lt;ending IP address]), SDC default group           name (i.e., [default_&lt;SDC reference&gt;]), or           master default (i.e., [default]).       NumberOfServers=   The total number of servers defined for           this domain       ServerX=   The TCP/IP name of Server number X where           x is a value of one to NumberOfServers           inclusive       ProxyServerX=   The TCP/IP name of proxy server X for           server X. Follow the name of the server           with a colon and the port number of the           proxy server if it is not port 80.       default_group=   ISSI Default server group       [&lt;Servername&gt;]       Nos=   Network operating system to use to access           the image server (NFS, FTP, HTTP, NTS...);           Overridden by package parameter file       RemoteServerPath=   The root directory on the server where the           software repository is located       key=   Flag indicating the encryption level of           key1 and key2 (00=key1/key2 plain text,           11= key1/key2 Level 1 encrypted)       key1=   Userid for access to the image server       key2=   Password for access to the image server       RemoteMountNos=   Network operating system to use if           NOS=RemoteMount is specified.       CopyLocalNos=   Network operating system to use if           NOS=CopyLocal specified.       httpRemoteServerPath=   The path to the software repository           relative to the web server document root.       httpDirListMethod=   Method for HTTP to use to get the           directory listing from the server           (CGI, FTP)       httpCgiScriptName=   Path to the CGI script to use for HTTP           directory listings if           httpDirListMethod=cgi       adminName=   Name of the administrator for this server.       adminEmail=   E-Mail address for the administrator.       ftp_data_mode   FTP Mode [Active|Passive] (for future           use).       DefaultSubnetMasks]       numDSN=   Total number of default subnet masks.       dsnX=   Default subnet mask X (where X=1, 2,..).                  
 
         [0134]    Sample Image Server Redirection Table:  
         [0135]    The sample table depicted below contains the following:  
         [0136]    Image server “milhouse.pok.ibm.com” (uses NFS protocol).  
         [0137]    Image server “milhouse.pok.ibm.com” (uses FTP protocol).  
         [0138]    Image server “sybil.pok.ibm.com” (uses HTTP protocol).  
         [0139]    Subnet specific server group “9.117.162.0”.  
         [0140]    Domain specific server groups “pok.ibm.com” and “fishkill.ibm.com”.  
         [0141]    Subnet range server group “SUB-9.117.0.0-9.117.31.0”.  
         [0142]    VPN internal IP address server group “VPN-9.31.0.0-9.31.255.255”.  
         [0143]    SDC default group “default_us_north”.  
         [0144]    Master default group “default”.  
         [0145]    [HTTPLogServer] 
         [0146]    ServerName=ospdb.pok.ibm.com  
         [0147]    ScriptName=/cgi-bin/weblog.sh  
         [0148]    [DefaultSubnetMasks] 
         [0149]    numDSN=1  
         [0150]    dsn1=255.255.0.0  
         [0151]    [flounder.fishkill.ibm.com] 
         [0152]    nos=nfs  
         [0153]    remoteserverpath=/swdist/repos  
         [0154]    adminName=Bill Admin  
         [0155]    adminEmail=billadmin@us.ibm.com  
         [0156]    remoteMountNOS=nfs  
         [0157]    copyLocalNOS=ftp  
         [0158]    key=11  
         [0159]    key1=xxxxx  
         [0160]    Key2=xxxxx  
         [0161]    ftp_data_mode=active  
         [0162]    [milhouse.pok.ibm.com] 
         [0163]    nos=nfs  
         [0164]    remoteserverpath=/swdist/repos  
         [0165]    adminName=Joe Admin  
         [0166]    adminEmail=joeadmin@us.ibm.com  
         [0167]    remoteMountNOS=nfs  
         [0168]    copyLocalNOS=ftp  
         [0169]    key=11  
         [0170]    key1=xxxxx  
         [0171]    Key2=xxxxx  
         [0172]    ftp_data_mode=passive  
         [0173]    [sybil.pok.ibm.com] 
         [0174]    nos=nfs  
         [0175]    remoteserverpath=/swdist/repos  
         [0176]    adminName=Joe Admin  
         [0177]    adminEmail=joeadmin@us.ibm.com  
         [0178]    remoteMountNOS=nfs  
         [0179]    copyLocalNOS=http  
         [0180]    httpRemoteServerPath=/repos  
         [0181]    httpDirListMethod=cgi  
         [0182]    httpCgiScriptName=/cgi-bin/dirlist.sh  
         [0183]    key=11  
         [0184]    key1=xxxxx  
         [0185]    Key2=xxxxx  
         [0186]    ftp_data_mode=active  
         [0187]    [9.117.162.0] 
         [0188]    NumberOfServers=2  
         [0189]    Server1=milhouse.pok.ibm.com  
         [0190]    Server2=sybil.pok.ibm.com  
         [0191]    ProxyServer2=proxya.pok.ibm.com:8080  
         [0192]    default_group=default_us_north  
         [0193]    default_group_msg1=Package not found on any local servers.  
         [0194]    default_group_msg2=Do you wish to use a US North server? 
         [0195]    [pok.ibm.com] 
         [0196]    NumberOfServers=1  
         [0197]    Server1=sybil.pok.ibm.com  
         [0198]    ProxyServerl=proxyb.pok.ibm.com:8080  
         [0199]    default_group=default_us_north  
         [0200]    default_group_msg1=Package not found on any local servers.  
         [0201]    default_group_msg2=Do you wish to use a US North server? 
         [0202]    [fishkill.ibm.com] 
         [0203]    NumberOfServers=1  
         [0204]    Server1=flounder.fishkill.ibm.com  
         [0205]    Default_group=default  
         [0206]    [SUB-9.117.0.0-9.177.31.0] 
         [0207]    NumberOfServers=2  
         [0208]    Server1=milhouse.pok.ibm.com  
         [0209]    Server2=sybil.pok.ibm.com  
         [0210]    ProxyServer2=proxya.pok.ibm.com:8080  
         [0211]    default_group=default_us_north  
         [0212]    default_group_msg1=Package not found on any local servers.  
         [0213]    default_group_msg2=Do you wish to use a US North server? 
         [0214]    [VPN-9.31.0.0-9.31.255.255] 
         [0215]    NumberOfServers=2  
         [0216]    Server1=milhouse.pok.ibm.com  
         [0217]    Server2=sybil.pok.ibm.com  
         [0218]    ProxyServer2=proxya.pok.ibm.com:8080  
         [0219]    default_group=default_us_north  
         [0220]    default_group_msg1=Package not found on any local servers.  
         [0221]    default_group_msg2=Do you wish to use a US North server? 
         [0222]    [default_us_north] 
         [0223]    NumberOfServers=1  
         [0224]    Server1=milhouse.pok.ibm.com  
         [0225]    default_group=default  
         [0226]    default_group_msg1=Package not found on any US North server.  
         [0227]    default_group_msg2=Do you wish to use a default server? 
         [0228]    [default] 
         [0229]    NumberOfServers=2  
         [0230]    Server1=sybil.pok.ibm.com  
         [0231]    Server2=flounder.fishkill.ibm.com  
         [0232]    Default=NONE  
         [0233]    Image Staging Server Redirection Algorithm Examples:  
         [0234]    The following scenarios depict how the preceding sample table is used. To simplify the examples, an assumption is made that all servers in the sample table contain all ISSI packages and the description is limited to how the server groups are used.  
       EXAMPLE 1  
     Using a Domain Specific Server Group with a SDC Default Group  
       [0235]    The client workstation has the following TCP/IP information:  
                                                       hostname   pugsly.pok.ibm.com           i.p.   9.117.82.61           address           subnet   255.255.255.0           mask           subnet   9.117.82.0                      
 
         [0236]    The installation program proceeds as follows:  
         [0237]    First, it attempts to find a matching subnet specific group, i.e. “9.117.82.0”. Since the subnet specific server group is not in the table, it then attempts to find a matching domain specific group, i.e. pok.ibm.com. The domain specific server group exists, so “pok.ibm.com” becomes the group of candidate servers.  
         [0238]    The program selects a server from the group of candidate servers. Since only one server is contained in the group, it selects “sybil.pok.ibm.com”. If the installation program fails to connect to the server or fails to download the package image files from the server, then it removes the server from the group of candidate servers. Since the group contains no other servers, the program now determines whether a default group exists for the group of candidate servers.  
         [0239]    A SDC default group is specified for the group of candidate servers, so group “default_us_north” becomes the new group of candidate servers. Before using the SDC default group, the program prompts the user with SDC default group message “Package not found on any US North server. Do you wish to use a default server?” 
         [0240]    Assuming the user chooses to continue, then the program randomly selects a server from group “default_us_north”. It selects “milhouse.pok.ibm.com”. If the server fails similarly to “sybil.pok.ibm.com”, then it removes the server from the group of candidate servers. Since the group contains no other servers, the program again determines whether a default group exists for the group of candidate servers. In this case the default group is the master default staging server group (default_group=default). Therefore, the master default server group becomes the candidate server group. Before the new group is used, the user is prompted with a standard message. The master default server group is the last group attempted.  
       EXAMPLE 2  
     Using a Subnet Specific Server Group W/Associated SDC Default Group:  
       [0241]    The client workstation has the following TCP/IP information:  
                                                       hostname   vuozzo.pok.ibm.com           i.p.   9.117.162.45           address           subnet   255.255.255.0           mask           subnet   9.117.162.0                      
 
         [0242]    The installation program first attempts to find a matching subnet specific group, i.e. “9.117.162.0”. Since the server group exists, group “9.117.162.0” becomes the candidate staging server group. The rest of the logic is similar to example 1. The next group of candidate servers is “default_us_north” followed by the master default group.  
       EXAMPLE 3  
     Using a Domain Specific Server Group Without Associated SDC Default Group  
       [0243]    The client workstation has the following TCP/IP information:  
                                                       hostname   sunny.fishkill.ibm.com           i.p.   9.119.81.61           address           subnet   255.255.255.0           mask           subnet   9.119.81.0                      
 
         [0244]    The installation program first attempts to find a matching subnet specific group, i.e. “9.117.81.0”. Since the server group is not in the table, it then attempts to find a matching domain specific group, i.e. fishkill.ibm.com. Since the server group exists, group “fishkill.ibm.com” becomes the candidate staging server group.  
         [0245]    The program randomly selects a staging server from the group of candidate servers. Since only one server is contained in the group, “flounder.fishkill.ibm.com” is selected. If the installation program fails to connect to the server or fails to download the package image files from the server, then it removes the server from the group of candidate servers and attempts to select another server. Since the group contains no other servers, the program now determines whether a default group exists for the group of candidate servers.  
         [0246]    The master default server group is associated with group “fishkill.ibm.com” (default_group=default). Therefore, the master default server group becomes the group of candidate servers. Before the new group is used, the user is prompted with a standard message. The master default server group is the last group attempted.  
       EXAMPLE 4  
     Using the Master Default Group  
       [0247]    The client workstation has the following TCP/IP information:  
                                                       hostname   stumpy.endicott.ibm.com           i.p.   9.115.61.34           address           subnet   255.255.255.0           mask           subnet   9.115.61.0                      
 
         [0248]    The installation unsuccessfully attempts to find subnet specific server group “9.115.61.0”, domain specific server group “endicott.ibm.com”, and a subnet range server group that contains subnet “9.115.61.0”. Since the user is not using a VPN, it also fails to find a VPN server group. The group of candidate servers automatically becomes the master default server group. That is the only server group attempted.  
       EXAMPLE 5  
     Using a Subnet Range Server Group W/Associated SDC Default Group  
       [0249]    The client workstation has the following TCP/IP information:  
                                                       hostname   vuozzo.southbury.ibm.com           i.p.   9.117.10.45           address           subnet   255.255.255.0           mask           subnet   9.117.35.0                      
 
         [0250]    The installation program unsuccessfully attempts to find subnet specific group “9.117.10.0” and domain specific server group “southbury.ibm.com”. Since the subnet is included in subnet range server group “SUB-9.117.0.0-9.117.31.0”, the subnet range server group becomes the candidate staging server group.  
       EXAMPLE 6  
     Using a VPN Internal IP Address Range Server Group  
       [0251]    The client workstation has the following TCP/IP information:  
                                                       hostname   vuozzo.southbury.ibm.com           i.p.   10.111.222.333           address           subnet   255.255.255.0           mask           subnet   10.111.222.0           Internal   9.31.111.222           IP           address                      
 
         [0252]    Since the internal IP address is included in internal IP address range server group “VPN-9.31.0.0-9.31.255.255”, the internal IP address range server group becomes the candidate staging server group.  
         [0253]    First Contact Server Override File  
         [0254]    The first contact server contains the server redirection table. The default first contact server for this solution is the corporate intranet FTP server. The master web server for ISSI contains a file that allows an override to the client&#39;s definitions for: the first contact server, directory for the staging server redirection table, access protocol (NOS) and the userid and password. The override is accomplished by including the contents of the override file in each package parameter file sent to the client during package delivery. This facilitates automated maintenance of the first contact server definition. The format of this file is described in Table 4 “First Contact Server Override File Specification (frstcon.ovr)”.  
         [0255]    Table: First Contact Server Override File Specification (frstcon.ovr)  
         [0256]    The first contact server override file is located on the master Web server. It is appended to all package parameter files that are constructed by the ISSI CGI script. The contents of this file are compared to those in the clients WEB.INI file and if different, the WEB.INI file is updated to match this file. This provides the capability to update WEB.INI file settings without end-user intervention.  
                                                   [Stanza]/Key name   Description                           ServerName=   Name of the first contact server           Nos=   Network operating system to use to               access the image server               (NFS, FTP, NTS...); Overridden by package               parameter file           RemoteServerPath=   The root directory on the server where               the image server redirection table is               located           key=   Flag indicating the encryption level of               key1 and key2 (00=key1/key2 plain text,               11= key1/key2 Level 1 encrypted)           key1=   Userid for access to the first contact               server           key2=   Password for access to first contact               server                      
 
         [0257]    Sample First Contact Server Override File:  
         [0258]    servername=d02ftp001.southbury.ibm.com  
         [0259]    nos=ftp  
         [0260]    remoteserverpath=/home/ospwebc2/swdist/repos  
         [0261]    key=11  
         [0262]    key1=xxxxx  
         [0263]    key2=xxxxx  
         [0264]    Table 5: Package Server Availability Tables  
         [0265]    There will be one package server availability table per package. Each table will list each server that contains the package. The table naming convention is as follows: &lt;pkgspec&gt;_&lt;nls&gt;_&lt;packaging version&gt;_&lt;package owner&gt;_&lt;OS&gt;.tbl.  
                                                   [Stanza]/Key name   Description                           ServerName1=TRUE   First server containing package           ServerName2=TRUE   Second server containing package           ...   ...           ServerNameN=TRUE   Nth server containing package                      
 
         [0266]    Sample Package Server Availability Table—LFG97000_US — 3_PLAT_W32.TBL  
         [0267]    morticia.pok.ibm.com=TRUE  
         [0268]    sybil.pok.ibm.com=TRUE  
         [0269]    Staging Server  
         [0270]    The staging server hosts the installation images of the software packages. These images are installed directly from the staging server via NFS or moved to the target via FTP or HTTP for local installation.  
         [0271]    Source Image Location  
         [0272]    The source image repository can be located (“rooted”) anywhere on the staging server. This location must correlate with the RemoteServerPath value stored in the image server redirection table for that staging server. Subordinate directories must follow the OSP Packaging Architecture.  
         [0273]    Source Image Access  
         [0274]    A userid and password pair is used to access the source images via FTP when the local staging option has been selected.  
         [0275]    Directory Structure  
         [0276]    The package repository specification is consistent with the OSP packaging directory structure.  
         [0277]    Example Embodiments:  
         [0278]    The electronic distribution and installation of software by “pull” requires that a recipient Client machine successfully connect to a provider Server (“Client” herein refers to a target machine requesting software and “Server” refers to a package, or image, staging server). It is also desirable that the system optimally handles a client connected via a Virtual Private Network (VPN) through an Internet Service Provider (ISP). Potentially the VPN client is traveling and connected via a mobile dial-up connection:  
         [0279]    A. that is available on the network (functionally in operation, not “down”),  
         [0280]    B. that contains the desired software/data package, and  
         [0281]    C. that will authenticate permission to perform the operation.  
         [0282]    In addition, it is desirable that the Server be:  
         [0283]    A. reachable via a common point of contact,  
         [0284]    B. capable of membership in a global layout of heterogeneously-populated peer Servers,  
         [0285]    C. topologically near to the Client (or VPN Client),  
         [0286]    D. randomly chosen for the purpose of load balancing from a group of topologically-equidistant peer Servers if such group exists, and  
         [0287]    E. provide a fallback Server option or succession of options.  
         [0288]    The IBM Standard Software Installer (henceforth ISSI) was developed and is frequently enhanced to meet these needs. ISSI does not require that the Client be registered to a specific server; rather, an ISSI client need only visit a central web site to select a software package for download and installation. Upon selection of a specific software package the underlying logic of ISSI will:  
         [0289]    A. determine the location of the Client in the network topology,  
         [0290]    B. create a list (candidate server table) of the names of potential Servers prioritized and grouped by various parameters such as topological-nearness,  
         [0291]    C. retrieve a list (package server availability table) of the names of Servers that actually are populated with the desired package,  
         [0292]    D. filter the candidate server table by eliminating those that are not also found in the package server availability table,  
         [0293]    E. choose a Server from the highest priority grouping in the filtered candidate server table, and then attempt a delivery and installation. In the event of a failure (possibly due to the Server not be available on the network) an alternative Server is chosen from the same Server grouping (if one is available, or from the next lower priority Server grouping if not) and the delivery re-attempted. If repeated failures and the associated invalidation of those Servers exhaust the candidate server table, then a master “default server group” list is used. In the forgoing, choosing is accomplished by any effective algorithm known including “pseudo” randomly. The logic described in this step forms the central idea of this disclosure.  
         [0294]    Note: the package server availability table is automatically updated on a regular basis by an agent that queries the set of known Servers for package availability.  
         [0295]    The specific invention disclosed is the inclusion of the hierarchy of Server groupings into the existing ISSI architecture. An example of a Server grouping hierarchy, in order of decreasing priority, is:  
         [0296]    Server Grouping Hierarchy:  
         [0297]    A. Building 052 (subnet)  
         [0298]    B. Poughkeepsie site (domain)  
         [0299]    C. New York State  
         [0300]    D. North-Eastern Region  
         [0301]    E. East Coast  
         [0302]    F. United States  
         [0303]    G. Default  
         [0304]    The advantage of the Server grouping hierarchy method is that it enables the possibility of rapidly assembled and easily managed aggregation of Servers into groups that can be ranked and exploited by ISSI using topology-sensitive and package distribution-sensitive logic.  
         [0305]    The master web server contains a set of tables that are used to identify the Server to be used for a package installation. The first table used is the Server redirection table. The table, which defines the global Server topology, specifies the following:  
         [0306]    Server Redirection Table  
         [0307]    A. Each ISSI Server.  
         [0308]    B. Domain specific server groups.  
         [0309]    C. Subnet specific server groups.  
         [0310]    D. Subnet range server groups.  
         [0311]    E. VPN internal IP Address range server groups (referred to as VPN server groups).  
         [0312]    F. Locale specific default server groups.  
         [0313]    G. A master default server group.  
         [0314]    H. A list of default subnet masks.  
         [0315]    The table is maintained by the Service Provider with information supplied by service delivery center (locale-specific, or “SDC”) representatives. The table is used by the Service Provider&#39;s installation programs to identify the server to be used for a specific package installation. The decision is based on the target machine&#39;s TCP/IP domain name or the subnet portion of its IP address or VPN information. In general, the staging server redirection algorithm uses the domain, subnet or VPN information to identify a server group that is geographically close to the client machine. It randomly selects a server from that server group to perform the installation. Locale-specific representatives provide the Service Provider with the staging server and server group information required to define their locale&#39;s topology. For locations that define TCP/IP domains based on specific geographical locations, domain specific server groups are the preferred method for identifying the candidate servers to be used for deliveries to their clients. For locations were TCP/IP domains are spread over wide or scattered geographical areas, subnet specific server and subnet range groups are used (in that order). Subnet specific server groups may represent a class B or Class C subnet. For remote users connected to an Internet Service Provider (ISP) network accessing the corporate network via a VPN client, VPN server groups are used. Locale-specific representatives may also define a locale-specific default server group. The locale-specific default server group is associated with the corresponding locale-specific domain, subnet, subnet range, or VPN server groups. It is used when none of the servers in a domain, subnet, subnet range, or VPN server group can be used to deliver a package. The locale-specific representative may also specify the “SDC default group message” that is displayed to the customer before a locale-specific default server group is used. When defining the locale-specific default group, the locale-specific representative specifies whether the master default server group is to be used in the case that none of the servers in the locale-specific default group can be used to install the package.  
         [0316]    The table contains a special server group, the master default server group, which is used in two circumstances: (1) when no domain, subnet or VPN group matches a client&#39;s IP/VPN information, or (2) when no server in a locale-specific default server group can be used to deliver a package. The master default server group is guaranteed to contain at least one Service Provider owned server that contains all production ISSI packages.  
         [0317]    In addition to the image server redirection table, the master web server contains a number of package server availability tables. The server contains one table per ISSI package. Each table contains the names of the staging servers that contain the package. The tables are generated by an agent which periodically connects to every staging server to discover its packages. In general, the staging server redirection algorithm uses the corresponding package server availability table to identify the servers within a selected server group that contain the respective package.  
         [0318]    Preferred Embodiment of a Server Redirection Algorithm:  
         [0319]    The Server redirection algorithm follows:  
         [0320]    1. Obtain the Client machine&#39;s TCP/IP address, subnet mask and domain. Using the IP address and subnet mask, determine the Client machine&#39;s subnet  501 .  
         [0321]    2. Retrieve  502  the Server redirection table  503  and the corresponding package server availability table  504  from the first contact server.  
         [0322]    3. Using the Server redirection table  503 , identify the server group to be used as the “group of candidate servers”. The following options are attempted in the order specified below. Once a successful options is found, proceed with step 4:  
         [0323]    a. Look for a matching subnet specific server group  505 .  
         [0324]    b. Look for a subnet range server group that includes target machine&#39;s subnet  511 .  
         [0325]    c. Look for a domain specific server group  507 .  
         [0326]    d. Attempt to query the MTS Global Net Client (remote dialup modem client application) for the target machine&#39;s internal IP address  750 . If an internal address is obtained, look for a VPN internal IP address range server group that includes the target machine&#39;s internal IP address  752 .  
         [0327]    e. Request the internal IP address for the target machine from the servers listed in section IPAddrQueryServers of the ISSI routing table (i.e., attempt each server until the request is satisfied)  753 . Details of the request are explained in section “Redirecting VPN Clients” (below). If an internal address is obtained, look for a VPN internal IP address range server group that includes the target machine&#39;s internal IP address  757 .  
         [0328]    f. Retrieve  704  the list of default subnet masks found in the routing table. For each default subnet mask, use the target machine&#39;s TCP/IP address and default subnet mask to create a “class B subnet”  708 . Look for a corresponding subnet specific server group. If none is found  712 , look for a subnet range server group  709  that includes the target machines class B subnet. If none is found, then use the master default server group  509 .  
         [0329]    4. Using the package server availability table  504 , identify the Servers in the group of candidate servers that contain the package. Remove Servers that do not contain the package from the group of candidate servers  610 .  
         [0330]    5. Randomly choose a Server from the group of candidate servers  611 . If a failure occurs connecting to the Server or downloading the package image from the Server, then the chosen Server is excluded from the group of candidate servers  612 . If the group of candidate servers is exhausted  620 , then proceed with the next step  614 . Otherwise, repeat this step  611 .  
         [0331]    6. If none of the Servers in the group of candidate servers can be used to successfully install the product  615 , then determine the type of default server group specified for the group of candidate servers (by inspecting keyword “default_group”)  617 . Proceed as follows depending on the type of default server group specified:  
         [0332]    a) If no default server group is specified (“default_group=NONE”), then the installation can not be performed  616 . If the group of candidate servers is the master default group, then no default server group will be specified for it. Note that the master default server group is the last server group that can possibly be attempted, so it must be specified with no default group.  
         [0333]    b) If a locale-specific default server group is specified (“default_group=default_&lt;SDC reference&gt;”), then repeat steps 4-6  617  with the locale-specific default server group as the group of candidate servers. If a locale-specific default group message is available, the message is first displayed to inform the user than a locale-specific default group is about to be used.  
         [0334]    c) If the master default server group is specified (“default_group=default”), then repeat steps 4-6  617  with the master default server group as the group of candidate servers. A standard message is first displayed to inform the user that the master default group is about to be used.  
         [0335]    Redirecting VPN Clients  
         [0336]    Redirection of Virtual Private Network clients is accomplished by:  
         [0337]    (1) obtaining the client&#39;s internal IP address, and (2) identifying a VPN internal IP address range server group that includes the internal IP address.  
         [0338]    The ISSI client code uses two methods to discover the client&#39;s internal IP address. The first method involves communicating with the MTS Global Net Client, IBM&#39;s standard Client for e-business VPN client, via the MTS API  750 . The second method involves requesting the internal IP address from servers listed in section IPAddrQueryServers of the ISSI routing table  753 . The server requests are made by sending an HTTP transaction to either a Web page containing a server side include or a CGI script. The server request method and the corresponding Web page or CGI script are specified in the ISSI routing table for each server. The server side include and the CGI script query environment variable REMOTE_ADDR, which contains the client&#39;s IP address as viewed by the Web server, and returns the value to the ISSI client code. The ISSI client code compares the “candidate” VPN internal IP address to the target machine&#39;s “locally obtained” IP address  751 / 755 . If the values are different, then the ISSI client code looks for a VPN internal IP address range server group that includes the VPN internal IP address  752 / 756 .  
         [0339]    While the invention has been described in detail herein in accordance with certain preferred embodiments thereof, many modifications and changes therein may be effected by those skilled in the art. Accordingly, it is intended by the appended claims to cover all such modifications and changes as fall within the true spirit and scope of the invention.  
         [0340]    The present invention can be included in an article of manufacture (e.g., one or more computer program products) having, for instance, computer usable media. The media has embodied therein, for instance, computer readable program code means for providing and facilitating the capabilities of the present invention. The article of manufacture can be included as a part of a computer system or sold separately.  
         [0341]    Additionally, at least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform the capabilities of the present invention can be provided.  
         [0342]    The flow diagrams depicted herein are just examples. There may be many variations to these diagrams or the steps (or operations) described therein without departing from the spirit of the invention. For instance, the steps may be performed in a differing order, or steps may be added, deleted or modified. All of these variations are considered a part of the claimed invention.  
         [0343]    Although preferred embodiments have been depicted and described in detail herein, it will be apparent to those skilled in the relevant art that various modifications, additions, substitutions and the like can be made without departing from the spirit of the invention and these are therefore considered to be within the scope of the invention as defined in the following claims.