U.S. patent application number 10/738065 was filed with the patent office on 2004-07-08 for selecting a preferred server from groups of servers based on geographical information obtained from the requesting client.
This patent application is currently assigned to International Business Machines Corporation. Invention is credited to Herrero, Victor R., Vuozzo, Michael L..
Application Number | 20040133626 10/738065 |
Document ID | / |
Family ID | 24258438 |
Filed Date | 2004-07-08 |
United States Patent
Application |
20040133626 |
Kind Code |
A1 |
Herrero, Victor R. ; et
al. |
July 8, 2004 |
Selecting a preferred server from groups of servers based on
geographical information obtained from the requesting client
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.
Inventors: |
Herrero, Victor R.;
(Poughkeepsie, NY) ; Vuozzo, Michael L.; (Salt
Point, NY) |
Correspondence
Address: |
John E. Campbell
IBM Corporation
2455 South Road, P386
Poughkeepsie
NY
12601
US
|
Assignee: |
International Business Machines
Corporation
Armonk
NY
|
Family ID: |
24258438 |
Appl. No.: |
10/738065 |
Filed: |
December 17, 2003 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
10738065 |
Dec 17, 2003 |
|
|
|
09565400 |
May 5, 2000 |
|
|
|
Current U.S.
Class: |
709/200 |
Current CPC
Class: |
H04L 67/1019 20130101;
H04L 29/12783 20130101; H04L 29/06 20130101; H04L 67/06 20130101;
H04L 67/34 20130101; H04L 69/329 20130101; H04L 67/1034 20130101;
H04L 63/083 20130101; H04L 63/0272 20130101; H04L 67/1021 20130101;
H04L 2029/06054 20130101; H04L 29/12009 20130101; H04L 67/1002
20130101; H04L 61/35 20130101 |
Class at
Publication: |
709/200 |
International
Class: |
G06F 015/16 |
Claims
What is claimed is:
1. A method for redirecting a client request for a package to a
server having the package, the method comprising the steps of:
receiving a request from a client computer to download a package of
digital data; querying a client application running on the client
for client location information; if client location information is
received, using the client location information to select a server
for downloading the package; and downloading the package from the
selected server to the client computer.
2. The method according to claim 1 wherein using the client
location information comprises the further steps of: receiving an
identifier from the requesting client computer, the identifier
identifying the requesting client computer; retrieving server
redirection information from storage, the server redirection
information comprising a representation of a plurality of groups of
candidate server identities, each group of candidate server
identities comprising one or more candidate server identities;
retrieving availability information from storage, the availability
information comprising the identities of servers having the
specified package available for downloading; selecting a preferred
group of the one or more groups of candidate server identities, the
preferred group being selected according to predetermined criteria;
and downloading the specified package to the requesting client
computer from a first candidate server identified in the preferred
group of servers if the first candidate server is a server
identified in the availability information.
3. The method according to claim 2 comprising the further step of
downloading the specified package to the requesting client computer
from a second candidate server identified in a default group of
servers if the second candidate server is a server identified in
the availability information and the specified package can not be
downloaded from the first candidate server.
4. The method according to claim 3 comprising the further step of
downloading the specified package to the requesting client computer
from a third candidate server identified in a master default group
of servers if the third candidate server is a server identified in
the availability information and the specified package can not be
downloaded from the second candidate server.
5. The method according to claim 1 wherein the client location
information is any one of an internal IP address, telephone area
code, a postal zip code or Global Positioning System (GPS)
data.
6. The method according to claim 1 wherein the client application
is a telephone modem dial-up application.
7. The method according to claim 1 wherein the querying a client
application step comprises the further steps of: retrieving the
client internal IP address from a list of servers in a routing
table; using the internal IP address if it is equal to a locally
obtained IP address; and using an internal IP address range server
group that includes the internal IP address if the internal IP
address is not equal to the locally obtained IP address.
8. A computer program product for redirecting a client request for
a package to a server having the package, the computer program
product comprising: a storage medium readable by a processing
circuit and storing instructions for execution by the processing
circuit for performing a method comprising: receiving a request
from a client computer to download a package of digital data;
querying a client application running on the client for client
location information; if client location information is received,
using the client location information to select a server for
downloading the package; and downloading the package from the
selected server to the client computer.
9. The computer program product according to claim 8 wherein using
the client location information comprises the further steps of:
receiving an identifier from the requesting client computer, the
identifier identifying the requesting client computer; retrieving
server redirection information from storage, the server redirection
information comprising a representation of a plurality of groups of
candidate server identities, each group of candidate server
identities comprising one or more candidate server identities;
retrieving availability information from storage, the availability
information comprising the identities of servers having the
specified package available for downloading; selecting a preferred
group of the one or more groups of candidate server identities, the
preferred group being selected according to predetermined criteria;
and downloading the specified package to the requesting client
computer from a first candidate server identified in the preferred
group of servers if the first candidate server is a server
identified in the availability information.
10. The computer program product according to claim 9 comprising
the further step of downloading the specified package to the
requesting client computer from a second candidate server
identified in a default group of servers if the second candidate
server is a server identified in the availability information and
the specified package can not be downloaded from the first
candidate server.
11. The computer program product according to claim 10 comprising
the further step of downloading the specified package to the
requesting client computer from a third candidate server identified
in a master default group of servers if the third candidate server
is a server identified in the availability information and the
specified package can not be downloaded from the second candidate
server.
12. The computer program product according to claim 8 wherein the
client location information is any one of an internal IP address,
telephone area code, a postal zip code or Global Positioning System
(GPS) data.
13. The computer program product according to claim 8 wherein the
client application is a telephone modem dial-up application.
14. The computer program product according to claim 8 wherein the
querying a client application step comprises the further steps of:
retrieving the client internal IP address from a list of servers in
a routing table; using the internal IP address if it is equal to a
locally obtained IP address; and using an internal IP address range
server group that includes the internal IP address if the internal
IP address is not equal to the locally obtained IP address.
15. A system for redirecting a client request for a package to a
server having the package, the system comprising: a network; a
client system in communication with the network; a server system in
communication with the network, wherein said server system includes
instructions to execute a method comprising: receiving a request
from a client computer to download a package of digital data;
querying a client application running on the client for client
location information; if client location information is received,
using the client location information to select a server for
downloading the package; and downloading the package from the
selected server to the client computer.
16. The system according to claim 15 wherein the step of using the
client location information comprises the further steps of:
receiving an identifier from the requesting client computer, the
identifier identifying the requesting client computer; retrieving
server redirection information from storage, the server redirection
information comprising a representation of a plurality of groups of
candidate server identities, each group of candidate server
identities comprising one or more candidate server identities;
retrieving availability information from storage, the availability
information comprising the identities of servers having the
specified package available for downloading; selecting a preferred
group of the one or more groups of candidate server identities, the
preferred group being selected according to predetermined criteria;
and downloading the specified package to the requesting client
computer from a first candidate server identified in the preferred
group of servers if the first candidate server is a server
identified in the availability information.
17. The system according to claim 16 wherein the method comprises
the further step of downloading the specified package to the
requesting client computer from a second candidate server
identified in a default group of servers if the second candidate
server is a server identified in the availability information and
the specified package can not be downloaded from the first
candidate server.
18. The system according to claim 17 wherein the method comprises
the further step of downloading the specified package to the
requesting client computer from a third candidate server identified
in a master default group of servers if the third candidate server
is a server identified in the availability information and the
specified package can not be downloaded from the second candidate
server.
19. The system according to claim 16 wherein the client location
information is any one of an internal IP address, telephone area
code, a postal zip code or Global Positioning System (GPS)
data.
20. The system according to claim 16 wherein the querying a client
application step comprises the further steps of: retrieving the
client internal IP address from a list of servers in a routing
table; using the internal IP address if it is equal to a locally
obtained IP address; and using an internal IP address range server
group that includes the internal IP address if the internal IP
address is not equal to the locally obtained IP address.
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'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'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'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] FIG. 1 is a high level schematic diagram of a Web Shopping
Server network;
[0054] FIG. 2 illustrates a high level flowchart of the prior
art;
[0055] FIG. 3 illustrates prior art ISSI flowchart of the download
function;
[0056] FIG. 4 illustrates an example redirection algorithm of an
embodiment of the invention;
[0057] FIG. 5 illustrates an example attempt group sub-process of
the invention;
[0058] FIG. 6 illustrates an example attempt other groups
sub-process of an embodiment of the invention; and
[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'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'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'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's TCP/IP address, subnet mask
and domain. Using the IP address and subnet mask, determine the
target machine'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'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_<SDC reference>"), 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'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's internal IP address. The
first method involves communicating with the MTS Global Net Client,
IBM'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'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'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'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'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.
1TABLE 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] <response 1-"n" response
descriptors and responses descriptor>= 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:
2 [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:.backslash.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'
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'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.
3 [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' VPN internal IP addresses. serverX= ServerX from
which ISSI may request clients' 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.
[<server group The name for one of a variety of server name>]
group types, including: single IP address, IP subnet, IP subnet
range (i.e., [SUB- <starting IP subnet>-<ending IP
subnet]), IP domain name, VPN internal IP address range (i.e.,
[VPN-<starting IP address>- <ending IP address]), SDC
default group name (i.e., [default_<SDC reference>]), 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 [<Servername>] 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.vertline.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:
4 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:
5 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:
6 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:
7 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:
8 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:
9 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'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.
10 [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:
<pkgspec>_<nls>_<packagin- g version>_<package
owner>_<OS>.tbl.
11 [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.sub.--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's installation programs to identify the server to be used
for a specific package installation. The decision is based on the
target machine'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'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'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's TCP/IP address, subnet mask
and domain. Using the IP address and subnet mask, determine the
Client machine'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'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'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'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'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'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_<SDC reference>"), 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'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's internal IP address. The first method involves
communicating with the MTS Global Net Client, IBM'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'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'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.
* * * * *