throbber
(12) United States Patent
`Wallis et al.
`
`US006282569B1
`(10) Patent N0.:
`US 6,282,569 B1
`(45) Date of Patent:
`Aug. 28, 2001
`
`(54) NAME SERVER COMPUTER HAVING A
`LOAD LEVELLING FACILITY TO SPREAD
`THE LOAD FROM CLIENT COMPUTERS
`ACROSS A PLURALITY OF SERVER
`COMPUTERS
`
`_
`(75) Inventors: Graham Derek Wallis, Locks Heath;
`Michael George Tayl0r> Southampton;
`Mlchael Platt> Hambledon; AI_1dreW
`James Stanford-Clark, Eastleigh, all of
`(GB)
`(73) Assignee: International Business Machines
`Corp” Armonk, NY (Us)
`
`( * ) Notice:
`
`SubJect to any disclaimer, the term of this
`patent is extended or adJusted under 35
`U-S~C~ 154(9) by 0 days-
`
`(21) Appl. No.: 08/868,111
`(22) Filed
`Jun 3 1997
`'
`'
`’
`Related US Application Data
`
`(63) Continuation of application No. 08/297,469, ?led on Aug.
`29, 1994, now abandoned.
`Foreign Application Priority Data
`(30)
`Sep. 11, 1993
`(GB) ................................................ .. 9318877
`(51) Int. Cl.7 .................................................... .. G06F 12/00
`_
`_
`_
`(52) US. Cl. ........................ .. 709/224, 709/203, 709/223,
`_
`_
`709/226’ 709/205
`(58) Fleld of Search ................................... .. 709/201, 202,
`709/203> 204> 217> 218> 219> 226> 227>
`228> 330; 700/178; 710/100; 707/202> 203>
`204> 205
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`4/1988 Frauenthal et a1. ................ .. 379/221
`4,737,983
`5,155,851 * 10/1992 Krishnan ......... ..
`395/650
`5,249,290 * 9/1993 HeiZer ................................ .. 395/650
`
`FOREIGN PATENT DOCUMENTS
`
`Egg '
`'
`OTHER PUBLICATIONS
`Gopal et al, Analysis of a Class of Distributed Directory
`Algorithms, lnfocom :89, pp 293_302_*
`Spahni et al, A Local Name Server for Organizational
`Message Handling Systems, Digital Communications 1988
`Zurich Seminar pp 239_246_4
`Anklesaria et al, The Internet Gopher Protocol, Network
`Workmg Group’ Mar' 1993'
`Primary Examiner—Majid Banankhah
`(74) Attorney, Agent, or Firm—Jerry W. Herndon
`(57)
`ABSTRACT
`
`*
`
`'
`
`A name server computer and method of operating such a
`computer, for facilitating a connection of a program on a
`client computer to a server, the server consisting of a
`plurality of server computers With shared resources. The
`name server computer, the client computer, and the server
`computers all reside in a logical network. The name server
`computer receives a request from the client computer for a
`Computer address of a Server Computer identi?ed by a Server
`computer name sent With the request, such computer address
`enabling a connection to be made from the client computer
`to that server computer via the netWork. A list of server
`computer names With their computer addresses is provided.
`The name Server Computer uses the hist to Convert th? Server
`computer name received from the client computer into the
`Com uter address Ofthe Server Com uter, and then Sends the
`P
`P
`computer address to the client computer. The computer
`further includes decision logic for Studying the Server Com_
`puters at predetermined intervals having regard to a prede
`termined test criteria, to select one of the server computers.
`The list is then updated by associating the computer address
`for the server computer selected by the decision logic With
`a particular server computer name contained as a generic
`server computer name in the list. Using this technique, When
`1'
`t
`1
`'fl
`th
`'
`1
`a C 16“, compu erthspecl es t e déenenc fsgver Compu er
`nameicli @513? :1 83mm er i‘
`F655 0
`6 Server Com‘
`Puter 1 en“ 6
`Y t 6 661510“ Ogle
`
`(List continued on next page.)
`
`13 Claims, 3 Drawing Sheets
`
`2a\
`
`GENERIC NAME
`
`30
`
`
`
`
`
`CLIENTE - _ — v T _ _ _ — _ — COMPUTER '1
`
`J0 1”
`
`NVERSION
`
`MEMORY \ma
`
`.
`1
`1
`.
`.
`.
`I
`.
`.
`.
`1
`I
`.
`
`.
`
`:
`:
`'
`l
`
`1
`i
`.
`.
`.
`
`I
`.
`4
`.
`
`110
`
`170 MESSAGING
`MEANS
`
`STORAGE
`DEVICE
`
`8a
`
`WRITING
`DECISION LOGIC
`12”
`MEANS
`13,, --- ,5,
`a
`15
`
`. 14a .
`l
`l
`------ - -
`.
`
`.
`.
`
`40
`
`I
`
`so
`
`'
`
`sa
`
`‘
`
`.
`
`SERVER
`COMPUTER 1
`
`SERVER
`COMPUTER 2
`
`SERVER
`COMPUTER a
`
`.
`
`Petitioner Microsoft Corporation - Ex. 1016, p.1
`
`

`
`US 6,282,569 B1
`Page 2
`
`US. PATENT DOCUMENTS
`
`5,335,356 * 8/1994 Andersson ........................ .. 455/54.1
`5,341,477 * 8/1994 Pitkin et a1.
`395/200
`5,408,619 * 4/1995 Oran ................................... .. 395/325
`
`5,434,914 * 7/1995 Fraser ................................. .. 379/219
`5,475,819 * 12/1995 Miller et a1. .
`. 395/200.03
`575047894 * 4/1996 Ferguson et aL ________________ " 395/650
`
`* cited by examiner
`
`Petitioner Microsoft Corporation - Ex. 1016, p.2
`
`

`
`U.S. Patent
`
`Aug. 28,2001
`
`Sheet 1 of3
`
`US 6,282,569 B1
`
`Q5
`
`Petitioner Microsoft Corporation - Ex. 1016, p.3
`
`

`
`U.S. Patent
`
`Aug. 28, 2001
`
`Sheet 2 of3
`
`US 6,282,569 B1
`
`N.03
`
`§§N
`
`ZO_._.<w_._<_._._Z_
`
`
`
`
`
`oz_m._.wo_Em_s_ozmw
`
`
`
`
`
`oz_Emo_Em_s_ozmm
`
`
`z%_Sn_s_oomm_>EmO._.
`
`mmmsmzooEimmOp
`
`Nmm_5n_s_oom_m>mm_mOH
`
`
`oz_Emo_Em__>_ozmm
`
`—m_m_.5n_s_OoEfimm9oz_Em
`
`o_Em__2Qzmw
`
`
`
`
`
`mm_>mmmm_s_<zO._.mo<mwm_s_ozmw
`
`
`
`§a.Nm_o<mO._.wm:.<n_nS
`
`
`
`mmSn_s_oomm_>mmm
`
`§kN
`
`3....
`
`>mosm_s_u_Om:<on_:mo“.
`
`
`
`n_o_m_m_n_omz__>_mm_Eom_mn_
`
`
`
`n_O>m_n_xm4:2:._._<>>
`
`QQN
`
`
`
`
`
`imamB<m._..mz__>_mm_m_o§®N
`
`
`
`
`
`wmm.S%,_oomm_>mm_ws_oE
`
`
`
`wmmzonammm._.<._._Oo§hN
`
`§hN
`
`Petitioner Microsoft Corporation - Ex. 1016, p.4
`
`Petitioner Microsoft Corporation - Ex. 1016, p.4
`
`
`
`
`
`
`
`
`
`

`
`U.S. Patent
`
`Aug. 28,2001
`
`Sheet 3 of3
`
`US 6,282,569 B1
`
`/430
`SERVER CLUSTER
`I ____________________________ ' ‘I
`
`410
`
`:
`:
`I
`I
`:
`I
`I
`I
`I
`I
`:
`:
`
`:
`;
`;
`:
`g
`:
`;
`;
`;
`;
`
`I -------- - - K5?”
`SERVER
`:
`COMPUTER I
`
`40
`
`I
`SERVER
`COMPUTER I
`I
`I
`SERVER
`COMPUTER I
`' 400
`I
`SERVER
`COMPUTER I
`
`. """"""" ' ‘
`
`SERVER
`COMPUTER
`
`SERVER
`COMPUTER
`
`SERVER
`COMPUTER
`
`SERVER
`COMPUTER
`
`:
`1
`I
`I
`:
`I
`;
`I
`:
`I
`:
`:
`
`I
`
`Petitioner Microsoft Corporation - Ex. 1016, p.5
`
`

`
`US 6,282,569 B1
`
`1
`NAME SERVER COMPUTER HAVING A
`LOAD LEVELLING FACILITY TO SPREAD
`THE LOAD FROM CLIENT COMPUTERS
`ACROSS A PLURALITY OF SERVER
`COMPUTERS
`
`The application is a continuation, of application Ser. No.
`08/297,469, ?led Aug. 29, 1994, noW abandoned.
`The present invention relates to a data processing system
`for facilitating the connection of a program on a client
`computer to a server, the server consisting of a plurality of
`server computers With shared resources.
`The data processing system, the client computer, and the
`server computers are all resident on a netWork. This netWork
`need not be one physical netWork such as a Local Area
`NetWork (LAN); for instance it may consist of a number of
`LANS or WANS (Wide area networks) connected together
`(eg. via ‘bridges’) to form a single logical netWork. HoWever
`the same netWork protocol Will be employed throughout the
`netWork, a typical eXample of such a protocol being TCP/IP
`Which Will be familiar to those skilled in the art.
`In many environments it is increasingly found that a
`number of server computers are connected together using
`some form of netWork, eg. a LAN. It is often the case that
`several users of client computers Will be connected to one
`such server computer, Whilst other server computers stand
`idle. An eXample of this is When such computers are situated
`in Workers’ of?ces, connected by, for example, a token ring
`LAN using the standard TCP/IP netWork protocol. When
`Workers are aWay from their of?ces, their computers Will
`usually stand idle.
`In such situations it is commonly the case that a feW of
`the computers in the netWork are heavily loaded, Whilst
`other computers in the netWork are very lightly loaded,
`giving poor response and performance for the client com
`puters using the heavily loaded server computers. Hence
`there is a problem of hoW to enable the client user load to be
`spread more evenly across the available computing
`resources of the server in a manner Which is transparent to
`the client computer and its programs. If transparency is to be
`achieved, standard protocols need to be observed in order
`that client computers can use a variety of connection meth
`ods Without modi?cation of any programs being required.
`A prior art technique Which has been developed to
`provide some sort of load spreading is called “Static load
`levelling”. With this technique each application on each
`client computer has a designated server to Which it alWays
`connects. Hence, for example, if there are 200 potential
`clients of a server having ?ve server computers, a pre
`speci?ed group of, say, 40 of the clients Will be told (or
`con?gured) to alWays connect to machine 1, etc. On average
`it may be argued that this Will give a reasonably even load
`across all of the server computers. HoWever in practice it is
`often the case that, using this technique, a large number of
`users of client computers are connected to one server
`computer, While an adjacent server computer stands com
`pletely idle (eg. given the above eXample there could easily
`be 40 users on one server computer Whilst the other 4 server
`computers stand idle). Hence in situations Where the user
`loading changes from time to time, the prior art static load
`levelling technique is not particularly satisfactory. What is
`required in such instances is a more ‘dynamic’ technique
`Which can respond to changing user loads, and thus direct
`neW users to the most suitable (eg. least heavily loaded)
`server computers in the server.
`Other prior art techniques can be found in other
`environments, such as those Where job allocation is an issue.
`
`10
`
`15
`
`25
`
`35
`
`45
`
`55
`
`65
`
`2
`For instance in “batch processing”, a client computer sub
`mits an encapsulated task to a central server, Which deter
`mines Which one of several possible servers is quiet enough
`to be able to handle the task. The task is sent to that server,
`is processed, and the results are then sent back to the client
`(eg. as a results ?le, or by electronic mail). With a batch
`processing system, there is a brief connection to the central
`server While the job is transferred from the client to the
`server allocated by the central server. After this brief con
`nection the client disconnects, and has no more interaction
`With the submitted task until it has been completed, and the
`results have been passed back to the client by some means.
`HoWever in the situation With Which We are currently
`concerned, the dynamic load levelling technique that is
`required must be able to deal With “interactive” sessions.
`Rather like a phone conversation, the connection betWeen
`the program on the client computer and a particular server
`computer Will persist for the duration of the “conversation”
`session. Hence the batch processing concept is inappropriate
`in the present situation.
`It is possible to Write some speci?c code Within a
`program on a client computer Which contains internal
`message-passing systems to route Work from that client
`program to a corresponding server program. Such systems
`are dedicated only to that particular client program, and the
`connection and load-levelling methods are not accessible to
`other client-server applications. Often, such systems operate
`by the client connecting to a speci?c “host” server computer,
`and from there the Work Will be sent to another server for
`processing. Clearly this technique can result in large bottle
`necks arising at the “host” server computer.
`Hence such a technique is not suitable in the present
`situation since it only supports one very speci?c type of
`client-server connection, Whereas We need a technique that
`Will alloW any client-server connection method using the
`netWork protocol to be connected to a quiet server in a Way
`that is completely transparent to the client program. Further
`the above technique relies on an initial connection to the
`‘central’ host server computer, Which then passes the request
`on to another server computer; as described above this can
`potentially create a serious bottleneck.
`It is an object of the present invention to provide a
`technique Which facilitates a connection betWeen a client
`program and a server computer on a server in a Way that
`takes into account the current status of the server computers
`forming the server. This technique must observe standard
`netWork protocols and should operate in a manner Which is
`transparent to the client program requesting access.
`Accordingly the present invention provides a data pro
`cessing system for facilitating a connection of a program on
`a client computer to a server, the server consisting of a
`plurality of server computers With shared resources, the data
`processing system, the client computer, and the server
`computers residing in a netWork, the system comprising:
`input means for receiving a request from the client computer
`for a machine address of a server computer identi?ed by a
`server computer name sent With the request, such a machine
`address enabling a connection to be made from the client
`computer to that server computer via the netWork; a storage
`device for storing a list identifying server computer names
`With machine addresses of the server computers; conversion
`means for using the list to convert the server computer name
`received by the input means into the machine address of the
`server computer; output means for sending the machine
`address from the conversion means to the client computer;
`the system being characterised by: decision logic for study
`ing the server computers at predetermined intervals having
`
`Petitioner Microsoft Corporation - Ex. 1016, p.6
`
`

`
`US 6,282,569 B1
`
`3
`regard to predetermined test criteria, in order to select one of
`the server computers; and Writing means for updating the list
`by associating the machine address for the server computer
`selected by the decision logic With a particular server
`computer name contained as a generic server computer
`name in the list; Whereby When a client computer speci?es
`the generic server computer name, it receives the machine
`address of the server computer identi?ed by the decision
`logic.
`Typically the conversion means Will access the list from
`a local piece of storage, the data processing system having
`a copier to copy the list from the storage device to that piece
`of memory. In preferred embodiments the data processing
`system further comprises a messaging means, responsive to
`the updating of the list by the Writing means, for sending a
`message to the copier requesting the copier to copy the
`updated list into the piece of local memory.
`Any manner of predetermined test criteria can be used in
`the data processing system of the invention, for eXample the
`amount of idle processor time, the number of processes
`running, the amount of free memory, the “load average”, etc.
`HoWever in preferred embodiments the predetermined test
`criteria are such that the decision logic identi?es the server
`computer having the least number of client programs logged
`on to it.
`In preferred embodiments the predetermined intervals
`are variable and Will either be set by a user of the system, eg.
`the system administrator, or Will be adjusted dynamically.
`The user Will also set the predetermined test criteria to be
`used by the decision logic.
`Further in preferred embodiments the user can limit the
`number of server computers Which the decision logic stud
`ies. This may be useful if, for instance, some of the server
`computers have not got access to all of the resources that
`other server computers have access to, and so Would not be
`suitable as server computers to be associated With the
`generic server computer name.
`In some embodiments it may be advantageous to use a
`plurality of generic names. Each server name Would then
`have a number of server computers Whose machine
`addresses are associated With that generic name, the decision
`logic employing different sets of predetermined test criteria
`for each generic name. In such embodiments one or more of
`the server computers can be associated With a plurality of the
`generic names.
`VieWed from a second aspect the present invention
`provides a method of operating a data processing system to
`facilitate a connection of a program on a client computer to
`a server, the server consisting of a plurality of server
`computers With shared resources, the data processing
`system, the client computer, and the server computers resid
`ing in a netWork, the method comprising the steps of: (a)
`receiving a request from the client computer for a machine
`address of a server computer identi?ed by a server computer
`name sent With the request, such a machine address enabling
`a connection to be made from the client computer to that
`server computer via the netWork; (b) storing a list identify
`ing server computer names With machine addresses of the
`server computers in a storage device; (c) converting, With
`reference to the list, the server computer name received at
`step (a) into the machine address of the server computer; (d)
`sending the machine address identi?ed at step (c) to the
`client computer; the method being characterised by the steps
`of: (e) employing decision logic to study the server com
`puters at predetermined intervals having regard to predeter
`mined test criteria, in order to select one of the server
`computers; and
`updating the list by associating the
`
`10
`
`15
`
`25
`
`35
`
`45
`
`55
`
`65
`
`4
`machine address for the server computer selected by the
`decision logic With a particular server computer name con
`tained as a generic server computer name in the list; Whereby
`When a client computer speci?es the generic server com
`puter name at step (a), it receives the machine address of the
`server computer identi?ed by the decision logic.
`The present invention Will be described further, by Way
`of eXample only, With reference to an embodiment thereof as
`illustrated in the accompanying draWings, in Which:
`FIG. 1 is a block diagram illustrating the data processing
`system of the preferred embodiment;
`FIG. 2 is a How diagram illustrating hoW the decision
`logic in the data processing system of the preferred embodi
`ment operates; and
`FIG. 3 illustrates a particular embodiment Where tWo
`generic computer names are used.
`in the preferred embodiment We Will consider the situ
`ation Where the server in question is a high performance
`database server Which has its data distributed across a
`netWork of server computers, this server netWork hereafter
`being referred to as a cluster. Database applications being
`run by users on client computers are required to connect to
`one of the server computers in the cluster to enable them to
`access the data in the database server. By the nature of the
`database system, it does not matter Which server computer
`the client connects to—all of the data is accessible from any
`server computer in the cluster. In the preferred embodiment
`the server computers and the client computers are all inter
`connected using TCP/IP on a token ring Local Area Net
`Work.
`For a large number of users, it is highly desirable to have
`a number of users on each of the server computers in the
`server cluster, rather than all users connecting to (and hence
`overloading) just one or a feW of the server computers. With
`a Widely varying user Workload pro?le for the database
`server, this problem can only be solved by providing some
`form of “load levelling” process, Which Will allocate neW
`client application instances to server computers in the cluster
`that are most suitable for the client connection (eg. because
`they are more lightly loaded than other server computers).
`Clearly this process must be dynamic, able to respond to
`changing load conditions over time. Since the database
`applications on the client computers are typically complex
`and often are supplied only in object code form, it Would be
`very dif?cult (or impossible) for the system administrator to
`alter them, and so it is essential that this allocation is done
`in a manner Which is entirely transparent to the client
`application.
`The manner in Which the data processing system of the
`preferred embodiment solves the above problems Will noW
`be described With reference to FIG. 1.
`Each client computer in a netWork using the TCP/IP
`protocol (there Will typically be many such client
`computers) Will have been informed by the netWork admin
`istrator that it is to communicate With a particular computer
`When it Wishes to convert a computer name of another
`computer in the netWork into a machine address. When
`utilising the present invention that computer Will be the data
`processing system Of the preferred embodiment.
`Hence When a program running on a client computer 20
`(for clarity, only one client computer is illustrated) Wishes to
`obtain access to a server computer (40, 50, 60) in the cluster
`it Will communicate With the data processing system 10 in
`order to obtain a full Internet machine address for the desired
`server (Internet addressing is part of the TCP/IP protocol).
`With the prior art technique the client computer Would
`specify a server computer name in this communication that
`
`Petitioner Microsoft Corporation - Ex. 1016, p.7
`
`

`
`US 6,282,569 B1
`
`5
`Was speci?c to one particular server computer in the cluster.
`The input means 30 of the data processing system 10 Would
`receive this server computer name and pass it to the con
`version means 70.
`In a storage device 80 of the data processing system a list
`is maintained Which identi?es server computer names With
`particular Internet addresses. When the conversion means is
`initiated the copier 90 copies this list from the storage device
`80 into a piece of local memory 100 accessible by the
`conversion means 70. Hence the conversion means Will
`access the list in memory 100 to ?nd the Internet address of
`the computer associated With the server computer name
`passed to it by the input means 30. This Internet address Will
`then be provided by the conversion means to the output
`means 110 for transmission back to the client computer 20.
`Once the client computer has the Internet address it can
`then make direct contact With the server computer residing
`at the Internet address provided; in FIG. 1 this is server
`computer 2. Since the TCP/IP protocol is used any of the
`access methods that use this protocol can be used to access
`the server computer.
`When using the data processing system of the preferred
`embodiment the program running on the client computer 20
`Will not use the server computer name that it previously
`used. Instead a generic server computer name Will be used.
`This generic server name Will either have been placed in the
`program’s con?guration ?le, or alternatively the user of the
`program Will specify the generic name When running the
`program.
`Within the data processing system, decision logic 120 is
`provided Which periodically studies the server computers in
`the cluster having regard to some predetermined test criteria,
`hereafter called the metric string. In the preferred embodi
`ment the metric string is a list of questions Which When
`ansWered by the various server computers Will enable the
`decision logic to decide Which server computer is most
`suitable for a client connection (the most suitable perhaps
`being the least heavily leaded server computer). The metric
`string can be altered as the system administrator deems
`appropriate, depending on What criteria the administrator
`Wishes to be used to select a server computer.
`In the preferred embodiment the decision logic actually
`sets up a number of child processes, each one being respon
`sible for sending the metric string to a particular server
`computer and receiving the response from the server com
`puter.
`Once the responses have been received the decision logic
`Will collate the responses, decide Which server computer is
`most suitable, and then request the Writing means 160 to
`pass the Internet address of that server computer to the
`storage device for association With the generic server com
`puter name. If hoWever the most suitable server computer is
`the same server computer as that identi?ed in the last
`iteration of the process then there is no need to update the
`storage device and the Writing means Will not be activated.
`Once any necessary update to the storage device 80 has
`been made the messaging means 170 Will notify the copier
`90 so that the copier updates the local memory 100 With the
`neW list as stored in the storage device 80.
`Hence When the client computer requests a machine
`address for the generic server computer name the conversion
`means 70 accesses the list in memory 100 and identi?es a
`machine address just as it Would if any other server com
`puter name had been given. HoWever in this instance the
`machine address actually relates to the server computer in
`the cluster Which has been identi?ed by the decision logic as
`the most suitable (eg. least heavily loaded). When this
`
`10
`
`15
`
`25
`
`35
`
`45
`
`55
`
`65
`
`6
`machine address is passed back to the client computer 20 via
`the output means 110, the client computer Will proceed to
`automatically access the server Which is most suitable.
`By this approach it Will be seen that a dynamic load
`levelling facility is provided Which is completely transparent
`to the client program. As far as the program is concerned it
`is requesting a machine address as normal and is using one
`of the normal TCP/IP access methods to gain access to the
`server computer allocated to it.
`In many of todays computing environments (eg Unix,
`AIX (Unix is a Trade Mark of Unix Systems Laboratories
`Inc)) an application is provided to perform the standard
`name resolution service (ie receipt of a computer name and
`conversion of that computer name into a full Internet
`address). This application is commonly knoWn as a
`“nameserver” application, and is installed on one or more
`computers in the logical netWork. Every other computer in
`the netWork is told to communicate With a speci?ed one of
`these ‘nameserver’ computers When it Wishes to determine
`an Internet address for any other computer in the netWork.
`Hence a nameserver computer provides a resolution service
`to client computers by receiving from them a convenient
`name (called a Uniform Resource Locator or URL) given to
`a particular computer (eg. abc.def.ghi.com), and converting
`it into a full Internet address (eg. 29.1.1966). This Internet
`address is then used by the routing subsystem (TCP/IP) to
`alloW a client user or application access to the physical
`computer (eg “abc” in this example).
`In the above example of a computer name, “abc” is the
`physical machine, “def” is typically the site location, “ghi”
`the organisation, and “com” one of the Internet classes (three
`such classes are (com)mercial, (edu)cation, (mil)itary).
`Domains and sub-domains can also be added as part of this
`computer name. Basically the name takes a hierarchical
`form, With the ?nest resolution at the beginning and the
`coarsest resolution at the end; this type of naming structure
`Will of course be Well knoWn to those skilled in the art.
`All TCP/IP-based applications, including remote-login,
`remote-shell, telnet, ftp, and also client-server applications
`(such as database applications), are aWare of the nameserver
`facility, and Will automatically go to the designated
`nameserver computer to ask for resolution of a computer
`name into an Internet address before attempting to make a
`connection to another computer in the netWork.
`If We consider FIG. 1 again, the standard nameserver
`facility Will include the folloWing elements: the input means
`30, the conversion means 70 With associated memory 100,
`the output means 110, the list stored in the storage device 80,
`and the copier 90.
`The nameserver application is a “daemon” (background)
`process Which runs on the data processing system; this data
`processing system may (but need not) be one of the server
`computers forming part of the cluster over Which users are
`to be distributed. In Unix-type operating systems (eg. AIX
`by IBM Corporation, Ultrix by Digital Equipment
`Corporation, OSF/1 by the Open SoftWare Foundation, and
`HP-UX by HeWlett Packard, etc) this daemon process is
`called “named” (name-daemon), and When it is initialised, it
`reads a special database ?le (named.data) stored on the
`storage device 80 to obtain details of the computer names
`about Which it is expected to knoW (over Which it has
`“authority”), and the corresponding Internet addresses
`(“dotted decimal”, e.g. 29.1.1966) for each computer name.
`Whilst the name daemon is operating, it can be forced to
`re-read the information from the named.data database ?le by
`the sending of an inter-process signal to the name daemon
`process telling it to update its internal tables 100 from the
`database ?le (named.data).
`
`Petitioner Microsoft Corporation - Ex. 1016, p.8
`
`

`
`US 6,282,569 B1
`
`10
`
`15
`
`7
`In the preferred embodiment of the present invention We
`provide a further facility Which runs on the same computer
`as the nameserver application (“named”), and interfaces
`With it. A ‘generic’ computer name is introduced into the
`database ?le (named.data), Which refers not to one speci?c
`computer, but to any one of a number of computers offering
`equivalent functionality. For example, the generic name
`might be “server.cluster.def.ghi.com”; a client program
`requesting a connection to ‘server cluster’ is requesting
`connection to any one of the computers in the server cluster.
`The further facility provided by the preferred embodi
`ment Will be referred to hereafter as the “User Load Lev
`eller” (ULL) application. This application is responsible for
`deciding Which server computer in the cluster is currently
`the least heavily loaded, according to some appropriate
`metric, and for conveying this information to the nameserver
`application. Then subsequent requests for resolution of the
`generic server computer name to an Internet address result
`in the nameserver application sending back to the client
`computer the Internet address of the server computer Which
`has been deemed to be the most appropriate server computer
`for connection at that point in time.
`The ULL application consists of the folloWing elements
`from FIG. 1: the decision logic 120 With child processes 130,
`140, 150; the Writing means 160; and the messaging means
`170. As described earlier With reference to FIG. 1 the ULL
`25
`application periodically (at a frequency Which can varied
`(eg. tuned by a system administrator or dynamically
`adjusted)) polls the server computers in the cluster to
`determine hoW “busy” in some sense they are. The metric
`used may vary, depending on the type of Work Which is
`being handled by the cluster, but may for eXample include
`the number of login sessions, number of application
`instances running, number of idle cpu cycles since the last
`poll, etc. The metric can be altered to ensure that it is
`appropriate to a speci?c situation.
`Based on the results of this polling, and taking into
`account the situation Where a server computer in the cluster
`is too busy to respond to the status request Within a certain
`number of seconds, the ULL application decides Which
`machine is currently the least heavily loaded. The ULL
`application then modi?es the database ?le (named.data) to
`associate the generic cluster machine name With the Internet
`address of this least heavily loaded machine, and sends the
`special inter-process signal via the messaging means 170
`Which tells the nameserver application to re-read its database
`?le. The nameserver application Will then, in response to a
`name resolution request from a client program, resolve the
`generic server computer name into the Internet address of
`the most appropriate server computer in the cluster for the
`client program to connect to.
`The process carried out by the decision logic 120 of the
`preferred embodiment Will noW be described in more detail
`With reference to FIG. 2. At step 200 the ULL application is
`initialised. Anumber of steps are carried out at initialisation.
`For eXample the application: checks for multiple copies of
`the ULL application in memory; cleans up from a previous
`run of the application (by freeing up system resources such
`as memory, locks and semaphores still held in the name of
`the previous instance of the ULL application); and locates
`the nameserver application (named) and its data ?le
`(named.data). The ULL application then parses its con?gu
`ration ?le to read information de?ned by the system
`administrator, such as the metric strings, poll periods, iden
`tities of server computers in the cluster, etc. Further the ULL
`application generates a num

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket