Abstract:
A set of secure remote procedure calls are implemented in a network using the terms of the native communications protocol of the local and remote computers. The remote procedure calls allow a system administrator working from a client computer to directly interact and to manage the network operating system. One or more remote procedure calls are incorporated into the network client computer operating system and corresponding remote procedure calls are incorporated into the server computer operating system. As a result, developers may develop client software with the ability to load, unload or otherwise configure remote server applications using a network client computer to instruct the server computer operating system that supports the calls.

Description:
This is a continuation of application Ser. No. 08/355,369, filed Dec. 13, 1994, abandoned. 
    
    
     BACKGROUND 
     The present invention relates to the remote management of networked computers, and particularly to the remote management of network servers in a client-server computing environment. 
     Technological advances in microelectronics and digital computing systems have enabled the distribution of networking services across a wide range of computers participating in the network and over various communications media. Advances in distributing applications have also resulted in a client-server architecture for applications. Under the architecture, the portions of the application that interacts with the user are typically separated from the portions of the application that fulfill client process requests. Typically, the portions of an application that interact with the user are called a client or client software, whereas the portions of the application that services requests made by the client software are called a server or server software. However, a server could be running as a client to another server. In a network environment, the client and server are generally executed on different computers. 
     Management of the server software running on remote computers poses several problems. Historically, if the server software needed to be unloaded, configured or reloaded, the system administrator or other person responsible for administering network applications or the user of the client software was required to physically go to the remote computer and use the remote computer&#39;s input and display devices (usually, a keyboard and monitor) to reload, configure or unload the server software. If client software needed to have access to a server that was not loaded, the system administrator or user of the client software had to go physically to the remote computer and load the server software. If the client needed to interrogate the remote computer to determine what server software was available, or interrogate the remote computer to determine the devices supported by the remote computer, the system administrator or user had to physically go to the server and inspect the processes running on the server or physically inspect the devices attached to the remote computer. 
     Previously, the management of remote computers has typically been based on one of two schemes. One scheme, known as the remote console or log in scheme, employs client software that uses a simple network protocol, such as a protocol that provides for the creation, distribution and delivery of digital packets. The client software runs at the &#34;Network&#34; level of the Open Systems Interconnect or &#34;OSI&#34; model. Corresponding server software interacts directly with the client software. Through this scheme, the client software accepts input from the local computer, sends the input to the remote server software which in turn passes the keystrokes directly to the remote computer operating system. Given the nature of the scheme, that keystrokes entered on the local computer are passed over the network through the remote server software directly to the remote operating system, the only security that was employed was for access to the remote server application. 
     The second commonly used scheme uses the Simple Network Management Protocol (&#34;SNMP&#34;), and the Simple Management Protocol (&#34;SMP&#34;). Both are related and have the same historical roots. The scheme essentially defines two protocols for use in a heterogeneous environment. The major focus of the scheme does not concentrate on how remote computers are managed but on how to handle ensure the communication and interaction of heterogenous systems for management purposes. To date, the specification for this scheme consists of over 400 pages of documentation. Although this second scheme is useful in large heterogenous networks, the scheme fails to provide an elegant mechanism for client-server development of functionality to manage a specific remote network server over existing, native session level, i.e., at the &#34;Session&#34; level of the OSI model, network protocols. 
     Generally, all remote computers communicate in a network with other client computers by means of a network operating system that implements network communication by means of a native connection-based protocol running at the &#34;transport&#34; level of the OSI model (&#34;native communications protocol&#34;), such as Transmission Control Procedure (&#34;TCP&#34;), Server Message Block (&#34;SMB&#34;), or NetWare® Core Protocol (&#34;NCP&#34;). The developer of the network operating system provides a client that implements the native communications protocol on the local computer (&#34;network client&#34;) and an operating system that implements the native communications protocol on the remote computer. Developers writing client-server software for such network operating systems presently may either employ a remote console system and rely on the user of the client software to know how to interact with the remote computer, or employ a heterogenous network management protocol and develop the associated client-server applications to manage not only the local computer but various remote heterogeneous computers as well. Neither is satisfactory. 
     The remote console approach requires the user to know too much and lacks robust security. The heterogenous protocol requires the developer to do too much. The developer must implement the protocol, write the client and server applications and have access to the system internals of one or more of the remote operating systems in order to implement the necessary functionality. Thus, network administrators have needed a simple means of implementing remote management of networked computers, particularly for remote management of network servers in a client-server computing environment. 
     SUMMARY OF THE INVENTION 
     According to the present invention, a set of secure remote procedure calls are implemented in the network using the terms of the native communications protocol of the local and remote computers. The remote procedure calls allow client software to directly interact with the operating system of the remote computer so as to avoid the inherent problems of the currently available schemes. One or more remote procedure calls are incorporated into the network client and corresponding remote procedure calls are incorporated into the server operating system. Developers who then wish to develop client software with the ability to load, unload or otherwise configure their remote server applications may do so using a network client and server operating system supporting the calls. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     As depicted in the drawings, the present invention is implemented in terms of several remote procedure calls. Different remote procedure calls may be implemented to perform different tasks. Thus, a system administrator may easily perform the specified tasks from a remote location. 
     In one embodiment of the invention, remote procedure calls have been implemented for loading a remote process, unloading a remote process, mounting a remote volume, dismounting a remote volume, adding a name space to a volume, issuing set procedures to the remote operating system and executing a remote batch file. In the network client, code is implemented that creates packets conforming with the structure of the remote procedure calls in the server and in the form required by the underlying network communications protocol. For example, in a client-server environment supporting the NCP protocol, the client and server remote procedure calls must comply with the general NCP packet structure. 
     Each verb of the NCP protocol has a fixed packet header and a variable data block. Each verb has three fields and is known by a name and number. The name, such as &#34;RPC Load an NLM&#34; (which stands for &#34;Remote Procedure Call to Load a NetWare® Loadable Module&#34;) by itself is useful only for describing the task that the verb performs. The numbers associated with the three fields for the RPC Load an NLM are 0x2222, 131 and 01. The verb number (all three fields) acts as a unique identifier for the verb. The initial field of the number identifies the service category. For example all service oriented NCPs use 0x2222. The fixed packet header contains the type of request and other parameters necessary for the client and server to continue to communicate about a request, such as transaction sequence number, service connection number and task number. 
     NCP Protocol Environment 
     Because an understanding of the underlying network communications protocol is imperative to implementing the invention, and given that the embodiment of the invention discussed herein implements the invention as a set of remote procedure calls in an NCP environment, a typical client-server request session for the invention is described, but the basic concept of this invention may also be used in other operating environments. The session tracks the sequence of events from when the client software first requests that the remote server operating system loads a remote process. Prior to making the request, the client must be connected and authenticated to the remote computer and the user making the request must have the appropriate level of security. (See Security below). The basic steps in one embodiment of the invention, called &#34;RPC Load an NLM&#34; in the NetWare® Core Protocol environment, for remotely loading a server process (called an NLM or NetWare® Loadable Module) are: 
     1. The client software needing the services of a remote server software process issues a request to network client that also must be running in the local computer. The request is intercepted in the NetWare® environment through a module in the local network client known as the NetWare® shell. 
     2. The NetWare® shell interprets the request as an NCP request and passes the request to another module of the network client capable of creating an NCP packet. The NCP packet creation module, namely NCP.VLM in the NetWare® environment, creates the RPC Load an NLM verb and places it on the underlying transport. 
     3. The RPC Load an NLM request is then sent in the form of an NCP packet. The structure for the RPC Load an NLM verb is as provided in Table 1. 
     
                       TABLE 1______________________________________RequestFormatOffset Content                Type______________________________________ 0     RequestType  (0x2222)      WORD 2     SequenceNumber               (LastSeq+1)   BYTE 3     ConnectionHigh               (ServiceConn) BYTE 4     TaskNumber   (CurrentTaskNum)                             BYTE 5     ConnectionLow               (ServiceConn) BYTE 6     FunctionCode (131)         BYTE 7     SubFuncStrucLen               (see below)   WORD (Hi Lo                             format) 9     SubFuncCode  (01)          BYTE10     NLMLoadOptions               (see below)   LONG14     reserved     (0)           LONG 3!26     reservedFlags               {0}           BYTE 4!30     PathAndName  (see below)   BYTE !______________________________________ 
    
     Each NCP packet begins with a small message header that carries general status information about the current state of the connection between the client and the server. The client request header is seven bytes long, while a server&#39;s reply header is eight bytes long. As shown in Table 1, the RequestType variable defines the type of network request. A type of0x1111 is reserved for connection allocation services; a type of 0x2222 is reserved for server request services; a type of 3333 is reserved for server responses; a type of 0x5555 is reserved for destroying connections; and a type of 0x9999 is reserved for work in progress responses. 
     The sequence number maintains a numeric counter for all incoming requests to provide reply prioritization. The ConnectionNumberLow and the ConnectionNumberHigh numbers identify a particular service connection between the client and the server. The TaskNumber distinguishes which client process or thread is making the request to the server. 
     In the NetWare® environment the SubFuncStrucLen will be 21 plus the size of the PathAndName (ASCII) including the terminating null. The NLMLoadOptions include options to load the server process in a processor ring such as ring 0, 1, 2 or 3. The PathAndName variable of the structure includes the path and file name in ASCII of the location of the server software to be executed in the format of {volume name: }{path\...}file name\0. 
     
                       TABLE 2______________________________________ReplyFormatOffset   Content                Type______________________________________ 0       ReplyType    (0x3333)      WORD 2       SequenceNumber                 (ReqSeqNum)   BYTE 3       ConnectionHigh                 (ServiceConn) BYTE 4       TaskNumber   (CurrentTaskNum)                               BYTE 5       ConnectionLow                 (ServiceConn) BYTE 6       CompletionCode                 (variable)    BYTE 7       ConnStatusFlags                 (variable)    BYTE 8       RPCccode     (see below)   LONG12       reserved     (0)           LONG 4!______________________________________ 
    
     The server operating system responds to the &#34;RPC Load an NLM&#34; verb through the reply format provided in Table 2. In addition to the general message header information contained in the packet, the response packet includes the Completion Code, which will be 0 if the request was completed successfully or 251 if the server received an invalid subfunction request, namely one not matching the &#34;RPC Load an NLM&#34; verb structure. 
     The RPCcode contains information about the request to load the server process. If the server process was successfully loaded and executed, the RPCcode will contain a 0. If the server software module to be loaded in response to the request was not found or the name was not provided with the request, the server will return an RPCcode value of 158. 
     Client Software Implementing the Invention 
     Developers may use the present invention to develop client software that interacts with the network client to issue the appropriate remote procedure calls, depending on the desired function of the client software. As a means of testing the client software aspect of the invention the following client software programs are provided. The programs exercise each of the remote procedure calls identified in the current embodiment. 
     RPC Load an NLM ##SPC1## 
     Remote Services 
     Although many remote services are possible, seven are implemented in the current embodiment, including &#34;RPC Load an NLM,&#34; &#34;RPC Unload an NLM,&#34; &#34;RPC Mount a Volume,&#34; RPC Dismount a Volume,&#34;RPC Add Name Space to Volume,&#34; &#34;RPC Set Set Command Value,&#34; and &#34;RPC Execute NCF File.&#34; &#34;RPC Load and NLM&#34; is discussed above. The remainder are discussed below. 
     RPC Unload an NLM 
     This aspect of the present invention handles client requests to unload a running process in the remote computer. The request/reply format for this remote procedure call is: 
     
         ______________________________________RequestFormatOffset Content                Type______________________________________ 0     RequestType  (0x2222)      WORD 2     SequenceNumber               (LastSeq+1)   BYTE 3     ConnectionHigh               (ServiceConn) BYTE 4     TaskNumber   (CurrentTaskNum)                             BYTE 5     ConnectionLow               (ServiceConn) BYTE 6     FunctionCode (131)         BYTE 7     SubFuncStrucLen               (see below)   WORD (Hi Lo                             format) 9     SubFuncCode  (02)          BYTE10     reserved     (0)           LONG 4!26     reservedFlags               {0}           BYTE 4!30     PathAndName  (see below)   BYTE !______________________________________ 
    
     
         ______________________________________ReplyFormatOffset   Content                Type______________________________________ 0       ReplyType    (0x3333)      WORD 2       SequenceNumber                 (ReqSeqNum)   BYTE 3       ConnectionHigh                 (ServiceConn) BYTE 4       TaskNumber   (CurrentTaskNum)                               BYTE 5       ConnectionLow                 (ServiceConn) BYTE 6       CompletionCode                 (variable)    BYTE 7       ConnStatusFlags                 (variable)    BYTE 8       RPCccode     (see below)   LONG12       reserved     (0)           LONG______________________________________ 
    
     
         ______________________________________CompletionCode______________________________________ 0              Successful251             Invalid Subfunction Request______________________________________ 
    
     
         ______________________________________RPCccode______________________________________ 0           Successful completion of the request RPC158          Bad File Name or No File Name given______________________________________ 
    
     SubFuncStrucLen 
     Sub function length will be 21 plus the size of the PathAndName (ASCIIZ) including the terminating null. 
     PathAndName 
     ASCII path and file name to load. 
     FORMAT: {volume name: }{path\...}file name\0 
     RPC Mount Volume 
     This aspect of the invention permits the client software to mount a remote storage volume. The request/reply format is as follows: 
     
         ______________________________________RequestFormatOffset Content                Type______________________________________ 0     RequestType  (0x2222)      WORD 2     SequenceNumber               (LastSeq+1)   BYTE 3     ConnectionHigh               (ServiceConn) BYTE 4     TaskNumber   (CurrentTaskNum)                             BYTE 5     ConnectionLow               (ServiceConn) BYTE 6     FunctionCode (131)         BYTE 7     SubFuncStrucLen               (see below)   WORD (Hi Lo                             format) 9     SubFuncCode  (03)          BYTE10     reserved     (0)           LONG 4!26     reservedFlags               {0}           BYTE 4!30     VolumeName   (see below)   ASCIIZ______________________________________ 
    
     
         ______________________________________ReplyFormatOffset   Content                Type______________________________________ 0       ReplyType    (0x3333)      WORD 2       SequenceNumber                 (ReqSeqNum)   BYTE 3       ConnectionHigh                 (ServiceConn) BYTE 4       TaskNumber   (CurrentTaskNum)                               BYTE 5       ConnectionLow                 (ServiceConn) BYTE 6       CompletionCode                 (variable)    BYTE 7       ConnStatusFlags                 (variable)    BYTE 8       RPCccode     (see below)   LONG12       reserved     (0)           LONG 4!28       VolumeNumber (variable)    LONG______________________________________ 
    
     
         ______________________________________CompletionCode______________________________________ 0              Successful251             Invalid Subfunction Request______________________________________ 
    
     
         ______________________________________RPCccode______________________________________0            Successful completion of the request RPC        Invalid Volume Name        Voume Already Mounted______________________________________ 
    
     SubFuncStrucLen 
     Sub function length will be 21 plus the size of the VolumeName (ASCIIZ) including the terminating null. 
     VolumeName 
     Volume Name (in ASCIIZ format) to be mounted. 
     FORMAT: volume name\0 
     RPC Dismount Volume 
     This aspect of the invention dismounts a volume on the remote computer. The request/reply format is as follows: 
     
         ______________________________________RequestFormatOffset Content                Type______________________________________ 0     RequestType  (0x2222)      WORD 2     SequenceNumber               (LastSeq+1)   BYTE 3     ConnectionHigh               (ServiceConn) BYTE 4     TaskNumber   (CurrentTaskNum)                             BYTE 5     ConnectionLow               (ServiceConn) BYTE 6     FunctionCode (131)         BYTE 7     SubFuncStrucLen               (21)          WORD (Hi Lo                             format) 9     SubFuncCode  (04)          BYTE10     reserved     (0)           LONG 4!26     reservedFlags               {0}           BYTE 4!30     VolumeName   (see below)   ASCIIZ______________________________________ 
    
     
         ______________________________________ReplyFormatOffset   Content                Type______________________________________ 0       ReplyType    (0x3333)      WORD 2       SequenceNumber                 (ReqSeqNum)   BYTE 3       ConnectionHigh                 (ServiceConn) BYTE 4       TaskNumber   (CurrentTaskNum)                               BYTE 5       ConnectionLow                 (ServiceConn) BYTE 6       CompletionCode                 (variable)    BYTE 7       ConnStatusFlags                 (variable)    BYTE 8       RPCccode     (see below)   LONG12       reserved     (0)           LONG______________________________________ 
    
     
         ______________________________________CompletionCode______________________________________ 0              Successful251             Invalid Subfunction Request______________________________________ 
    
     
         ______________________________________RPCccode______________________________________0            Successful completion of the request RPC        Invalid Volume Name______________________________________ 
    
     VolumeName 
     Volume Name (in ASCIIZ format) to be dismounted. 
     FORMAT: volume name\0 
     RPC Add Name Space To Volume 
     This aspect of the present invention permits a user to dynamically add a specified name space to a mounted volume on the remote computer. A name space supports specific attributes for a particular client, such as file name length, file characters, case sensitivity, multiple fries (such as a resource file containing formating information), vector graphics, and other such functions. The request/reply format in the NetWare® Core Protocol is: 
     
         ______________________________________RequestFormatOffset Content                Type______________________________________ 0     RequestType  (0x2222)      WORD 2     SequenceNumber               (LastSeq+1)   BYTE 3     ConnectionHigh               (ServiceConn) BYTE 4     TaskNumber   (CurrentTaskNum)                             BYTE 5     ConnectionLow               (ServiceConn) BYTE 6     FunctionCode (131)         BYTE 7     SubFuncStrucLen               (05)          WORD (Hi Lo                             format) 9     SubFuncCode  (04)          BYTE10     reserved     (0)           LONG 4!26     reservedFlags               {0}           BYTE 4!30     AddNameSpace (see below)   ASCIIZ______________________________________ 
    
     
         ______________________________________ReplyFormatOffset   Content                Type______________________________________ 0       ReplyType    (0x3333)      WORD 2       SequenceNumber                 (ReqSeqNum)   BYTE 3       ConnectionHigh                 (ServiceConn) BYTE 4       TaskNumber   (CurrentTaskNum)                               BYTE 5       ConnectionLow                 (ServiceConn) BYTE 6       CompletionCode                 (variable)    BYTE 7       ConnStatusFlags                 (variable)    BYTE 8       RPCccode     (see below)   LONG12       reserved     (0)           LONG 4!______________________________________ 
    
     
         ______________________________________CompletionCode______________________________________ 0              Successful251             Invalid Subfunction Request______________________________________ 
    
     
         ______________________________________RPCccode______________________________________0            Successful completion of the request RPC______________________________________ 
    
     SubFuncStrucLen 
     Sub function length will be 21 plus the size of the AddNameSpace string (ASCIIZ) including the terminating null. 
     Add Name Space 
     AddNameSpace string (in ASCIIZ form) to add the name space to a selected volume name. 
     FORMAT: &#34;NameSpaceName {TO} {VOLUME} 
     
         ______________________________________NameSpaceName Format:Short Name            Long Name______________________________________MAC                   MACINTOSHUNIX                  UNIXFTAM                  FTAMOS2                   OS2NF______________________________________ 
    
     RPC Set Set Command Value 
     This aspect of the present invention allows the client to change the current value of a set command on the remote computer. In the NetWare® environment, the set command determines such things as communications parameters, memory allocations, file caching, directory caching, file system parameters, file locking parameters, transaction tracking, and disk management. The request/reply format is: 
     
         ______________________________________Request FormatOffset Content                    Type______________________________________0      RequestType  (0×2222)                             WORD2      SequenceNumber               (LastSeq+1)   BYTE3      ConnectionHigh               (ServiceConn) BYTE4      TaskNumber   (CurrentTaskNum)                             BYTE5      ConnectionLow               (ServiceConn) BYTE6      FunctionCode (131)         BYTE7      SubFuncStrucLen               (06)          WORD (Hi Lo                             format)9      SubFuncCode  (04)          BYTE10     typeFlag     (see below)   LONG14     Value        (see below)   LONG18     reserved     (0)           LONG 2!26     reservedFlags               {0}           BYTE 4!30     SetCmdName   (see below)   ASCIIZxx     {optional string}               (see typeFlag)                             ASCIIZ______________________________________ 
    
     
         ______________________________________ReplyFormatOffset   Content                    Type______________________________________0        ReplyType    (0×3333)                               WORD2        SequenceNumber                 (ReqSeqNum)   BYTE3        ConnectionHigh                 (ServiceConn) BYTE4        TaskNumber   (CurrentTaskNum)                               BYTE5        ConnectionLow                 (ServiceConn) BYTE6        CompletionCode                 (variable)    BYTE7        ConnStatusFIags                 (variable)    BYTE8        RPCccode     (see below)   LONG12       reserved     (0)           LONG 4!______________________________________ 
    
     
         ______________________________________Completion Code______________________________________0              Successful251            Invalid Subfunction Request______________________________________ 
    
     RPCccode 
     0 Successful completion of the request RPC 
     SubFuncStrucLen 
     Sub function length will be 21 plus the size of the SetCmdName including the terminating null. If typeFlag is zero, then the optional string size including the null will must be included in the Sub Func Struc Len field. 
     typeFlag 
     If zero, then the optional string, which follows the SetCmdName, is the new value of the set command. If one, the the Value field contains the new value of the set command. 
     Value 
     New value of the set command parameter (if typeFlag is equal to one). 
     Set Cmd Name 
     Set parameter command name in ASCIIZ format. 
     {optional string} 
     If typeFlag is zero, this string used for the new set command parameter value. The set command parameter types (SP --  TYPE --  STRING &amp; SP --  TYPE --  TIME --  OFFSET) require a string instead of a numerical value. 
     RPC Execute NCF File 
     This aspect of the present invention allows the execution of a selected batch file on the remote computer. Thus the client software can copy a batch file to the server and then request the server to execute the batch file. The batch fie must comply with the underlying server operating system requirements. In the present embodiment as implemented in the NetWare® Core Protocol environment, the request/reply format is: 
     
         ______________________________________Request FormatOffset Content                    Type______________________________________0      RequestType  (0×2222)                             WORD2      SequenceNumber               (LastSeq+1)   BYTE3      ConnectionHigh               (Serviceconn) BYTE4      TaskNumber   (CurrentTaskNum)                             BYTE5      ConnectionLow               (ServiceConn) BYTE6      FunctionCode (131)         BYTE7      SubFuncStrucLen               (see below)   WORD (Hi Lo                             format)9      SubFuncCode  (07)          BYTE10     reserved     (0)           LONG 4!26     reservedFlags               {0}           BYTE 4!30     PathAndName  (see below)   BYTE  !______________________________________ 
    
     
         ______________________________________ReplyFormatOffset   Content                    Type______________________________________0        ReplyType    (0×3333)                               WORD2        SequenceNumber                 (ReqSeqNum)   BYTE3        ConnectionHigh                 (ServiceConn) BYTE4        TaskNumber   (CurrentTaskNum)                               BYTE5        ConnectionLow                 (ServiceConn) BYTE6        CompletionCode                 (variable)    BYTE7        ConnStatusFIags                 (variable)    BYTE8        RPCccode     (see below)   LONG12       reserved     (0)           LONG 4!______________________________________ 
    
     
         ______________________________________CompletionCode______________________________________0              Successful251            Invalid Subfunction Request______________________________________ 
    
     
         ______________________________________RPCccode______________________________________0           Successful completion of the request RPC158         Bad File Name or No File Name given______________________________________ 
    
     SubFuncStrucLen 
     Sub function length will be 2 1 plus the size of the PathAndName (ASCIIZ) including the terminating null. 
     PathAndName 
     ASCIIZ path and file name to execute. 
     FORMAT: {volume name: }{path\...}file name\0 
     Security 
     One aspect of the present invention is the reliance on the security inherent in the network communication protocol. In the NetWare® environment, the security in the NCP protocol is provided through digital packet signing. The method and apparatus used in the NCP network communications protocol is described in greater detail in U.S. Pat. No. 5,349,642 issued Sep. 20, 1994, the disclosure of which is incorporated herein by this reference. 
     Server Implementation 
     The implementation of the remote procedure calls within the server maps the calls to the appropriate server operating system functions. In this fashion, the server implementation avoids the remote console login approach where each keystroke from the client is captured, packaged and sent to the server and then entered through the system console. In one embodiment, this aspect of the present invention is implemented in the NetWare® server environment as follows: ##SPC2## 
     As a result of implementing this procedure, developers who wish to develop client software with the ability to load, unload or otherwise configure their remote server applications may do so using a network client and server operating system supporting the calls. 
     Although one embodiment of the invention has been illustrated and described, various modifications and changes may be made by those skilled in the art without departing from the spirit and scope of the invention.