|
|
|
| United States Patent | 6031977 |
| Link to this page | http://www.wikipatents.com/6031977.html |
| Inventor(s) | Pettus; Christopher Edward (San Francisco, CA) |
| Abstract | On a multi-node client server network, a client node obtains access to
remote services by means of a communications directory service located in
each node of the network. The communications directory service includes a
tree structure to which existing directory services and other network
services can be added. The tree structure has a plurality of nodes each of
which includes specific methods that query and browse the associated
directory service if such actions are supported by the underlying service.
The communications directory service further includes shared libraries
which store a service object associated with each service offered on the
network. The service object, in turn, includes the service exchange
address and communication link configuration information. A client
desiring to access a remote service retrieves the appropriate service
object from the communications directory service and uses the service
object to set up the communications path. |
|
|
|
Title Information  |
|
|
|
|
|
Drawing from US Patent 6031977 |
|
|
Object-oriented distributed communications directory service |
|
|
|
|
|
| Publication Date |
February 29, 2000 |
|
|
|
|
|
| Filing Date |
December 18, 1995 |
|
|
|
|
|
|
|
|
|
|
|
| Parent Case |
This is a continuation of application Ser. No. 08/169,864 filed Dec. 17,
1993 now abandoned. |
|
|
|
|
|
|
|
|
|
|
|
|
|
Title Information  |
|
|
References  |
|
|
| *references marked with an asterisk below are user-added references |
|
U.S. References |
|
|
| Add a new US reference: |
| | Reference | Relevancy | Comments | Reference | Relevancy | Comments | 5515508 Pettus 709/203 May,1996 |      Your vote accepted [0 after 0 votes] | | 5481735 Mortensen 709/246 Jan,1996 |      Your vote accepted [0 after 0 votes] | | 5448566 Richter 370/431 Sep,1995 |      Your vote accepted [0 after 0 votes] | | 5414812 Filip 707/103R May,1995 |      Your vote accepted [0 after 0 votes] | | 5408619 Oran 707/10 Apr,1995 |      Your vote accepted [0 after 0 votes] | | 5404529 Chernikoff 719/315 Apr,1995 |      Your vote accepted [0 after 0 votes] | | 5339435 Lubkin 717/121 Aug,1994 |      Your vote accepted [0 after 0 votes] | | 5317568 Bixby 370/401 May,1994 |      Your vote accepted [0 after 0 votes] | | 5303344 Yokoyama 709/230 Apr,1994 |      Your vote accepted [0 after 0 votes] | | 5282270 Oppenheimer 709/223 Jan,1994 |      Your vote accepted [0 after 0 votes] | | 5265239 Ardolino 709/217 Nov,1993 |      Your vote accepted [0 after 0 votes] | | 5181162 Smith 715/530 Jan,1993 |      Your vote accepted [0 after 0 votes] | | 5151987 Abraham 714/20 Sep,1992 |      Your vote accepted [0 after 0 votes] | | 5136716 Harvey 709/228 Aug,1992 |      Your vote accepted [0 after 0 votes] | | 5136705 Stubbs 714/27 Aug,1992 |      Your vote accepted [0 after 0 votes] | | 5133075 Risch 707/201 Jul,1992 |      Your vote accepted [0 after 0 votes] | | 5125091 Staas, Jr. 718/101 Jun,1992 |      Your vote accepted [0 after 0 votes] | | 5119475 Smith 715/866 Jun,1992 |      Your vote accepted [0 after 0 votes] | | 5093914 Coplien 717/129 Mar,1992 |      Your vote accepted [0 after 0 votes] | | 5075848 Lai
Dec,1991 |      Your vote accepted [0 after 0 votes] | | 5060276 Morris 382/151 Oct,1991 |      Your vote accepted [0 after 0 votes] | | 5050090 Golub 700/217 Sep,1991 |      Your vote accepted [0 after 0 votes] | | 5041992 Cunningham 345/641 Aug,1991 |      Your vote accepted [0 after 0 votes] | | 4953080 Dysart 707/103R Aug,1990 |      Your vote accepted [0 after 0 votes] | | 4891630 Friedman 345/156 Jan,1990 |      Your vote accepted [0 after 0 votes] | | 4885717 Beck 717/125 Dec,1989 |      Your vote accepted [0 after 0 votes] | | 4821220 Duisberg 703/2 Apr,1989 |      Your vote accepted [0 after 0 votes] | | 4614841 Babecki 379/93.29 Sep,1986 |      Your vote accepted [0 after 0 votes] | | 5388213 Oppenheimer 709/245 Dec,1969 |      Your vote accepted [0 after 0 votes] | | | | | |
|
|
|
|
U.S. References |
|
|
Foreign References |
|
|
|
|
|
|
Foreign References |
|
|
Other References |
|
|
|
|
|
|
Other References |
|
|
|
|
|
References  |
|
|
|
|
|
| Market Size |
|
Estimate the gross annual revenues of the relevant market
sector:
|
| | |
| |
|
|
| Market Share |
|
Estimate the percentage of the relevant market sector this invention will capture:
|
| | |
| |
|
|
| Reasonable Royalty |
|
What percentage of gross sales should the inventor or assignee be paid?
|
| | |
| |
|
|
|
Public's "Guesstimation" of Royalty Value
|
| Market Size | N/A | [No votes] | | x | Market Share | N/A | [No votes] | | x | Reasonable Royalty | N/A | [No votes] |
| | N/A | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
Market Review  |
|
|
Technical Review  |
|
|
Claims  |
|
|
What is claimed is:
1. A computer network system for connecting a client node having a memory to a server node having a memory with a selected one of a plurality of different communication
protocols in response to a request by the client node for a service, the computer network system comprising:
a dynamically programmable network stack connecting the client node to the network system;
a directory service program in the client node having means for storing, in the client node memory, stack definitions for programming the network stack to operate with different communication protocols on the network system;
installer apparatus for installing a service program in the server node for providing the service, the installer apparatus using characteristics of the service program to create and store a service object in the client node memory, the service
object comprising a network address for the service and a reference to a stored stack definition required to access the service; and
apparatus located in the client node responsive to the service request for using the directory service to locate and retrieve the stored service object and for using the stack definition referenced therein to dynamically program the network stack
to operate with a communication protocol required by the service program so that the client node can receive the service without becoming involved in details of communication protocols.
2. A computer network system according to claim 1 further comprising a directory service program in the server node having means for storing in the server node memory stack definitions for using different communication protocols on the network
system.
3. A computer network system according to claim 2 wherein the installer apparatus stores the service object in the server node memory, the service object comprising a reference to a stack definition stored in the server node, which stack
definition is required to access the service.
4. A computer network system according to claim 3 wherein the server node further comprises a second dynamically programmable network stack connecting the server node to the network system and wherein the service object comprises a stack
definition for programming the second programmable network stack.
5. A computer network system according to claim 2 further comprising means for copying directory service information from the directory service program in the server node to the directory service program in the client node.
6. A computer network system according to claim 1 wherein the directory service program further comprises:
a directory tree structure having a plurality of node objects, at least one of which corresponds to the service; and
a mechanism responsive to user-entered criteria for traversing the tree structure to locate the node object corresponding to the service.
7. A computer network system according to claim 6 wherein the node object corresponding to the service has the service object stored therein.
8. A method for connecting a client node having a memory to a server node having a memory with a selected one of a plurality of different communication protocols in response to a request by the client node for a service, the method comprising
the steps of:
(a) connecting the client node to the network system with a dynamically programmable network stack;
(b) creating in the client node, a directory service program having means for storing in the client node memory stack definitions for programming the network stack to operate with different communication protocols on the network system;
(c) installing a service program in the server node for providing the service and using characteristics of the service program to create and store a service object in the client node memory, the service object comprising a network address for the
service and a reference to a stored stack definition required to access the service; and
(d) using the request with the directory service to locate and retrieve the stored service object in order to use the stack definition referenced therein to dynamically program the network stack to operate with a communication protocol required
by the service program so that the client node can receive the service without becoming involved in the details of communication protocols.
9. A method according to claim 8 further comprising the steps of:
(e) creating a directory service program in the server node having means for storing in the server node memory stack definitions for using different communication protocols on the network system.
10. A method according to claim 9 wherein step (c) comprises the step of:
(c1) storing the service object in the server node memory, the service object comprising a reference to a stack definition stored in the server node, which stack definition is required to access the service.
11. A method according to claim 10 further comprising the step of:
(f) using a second dynamically programmable network stack to connect the server node to the network system and wherein the service object comprises a stack definition for programming the second programmable network stack.
12. A method according to claim 9 further comprising the step of:
(g) copying directory service information from the directory service program in the server node to the directory service program in the client node.
13. A method according to claim 8 wherein step (b) comprises the step of:
(b1) creating a directory tree structure having a plurality of node objects, at least one of which corresponds to the service; and
(b2) traversing the tree structure in response to user-entered criteria to locate the node object corresponding to the service.
14. A method according to claim 13 wherein step (b1) comprises the step of:
(b1a) creating the node object corresponding to the service with the service object stored therein.
15. A computer program product for connecting a client node having a memory to a server node having a memory with a selected one of a plurality of different communication protocols in response to a request by the client node for a service, the
computer program product comprising a computer usable medium having computer readable program code thereon, including:
program code for connecting the client node to the network system with a dynamically programmable network stack;
program code for creating in the client node, a directory service program having means for storing, in the client node memory, stack definitions for programming the network stack to operate with different communication protocols on the network
system;
program code for installing a service program in the server node for providing the service, the program code using characteristics of the service program to create and store a service object in the client node memory, the service object
comprising a network address for the service and a reference to a stored stack definition required to access the service; and
program code for using the request with the directory service to locate and retrieve the stored service object in order to use the stack definition referenced therein to dynamically program the network stack to operate with a communication
protocol required by the service program so that the client node can receive the service without becoming involved in the details of communication protocols.
16. A computer program product according to claim 15 further comprising program code for creating a directory service program in the server node having means for storing, in the server node memory, stack definitions for using different
communication protocols on the network system.
17. A computer program product according to claim 16 wherein the program code for installing a service program in the server node comprises program code for storing the service object in the server node memory, the service object comprising a
reference to a stack definition stored in the server node, which stack definition is required to access the service.
18. A computer program product according to claim 17 further comprising program code for using a second dynamically programmable network stack to connect the server node to the network system and wherein the service object comprises a stack
definition for programming the second programmable network stack.
19. A computer program product according to claim 16 further comprising program code for copying directory service information from the directory service program in the server node to the directory service program in the client node.
20. A computer program product according to claim 15 wherein the program code for creating a directory service program comprises:
program code for creating a directory tree structure having a plurality of node objects, at least one of which corresponds to the service; and
program code for traversing the tree structure in response to user-entered criteria to locate the node object corresponding to the service.
21. A computer program product according to claim 20 wherein the program code for creating a directory tree structure comprises program code for creating the node object corresponding to the service with the service object stored therein.
22. A server node for use with a computer network for connecting to a client node with a selected one of a plurality of different communication protocols in response to a request by the client node for a service, the server node comprising:
a memory;
a dynamically programmable network stack connecting the server node to the network system;
a communications directory service program having means for storing stack definitions for programming the network stack to operate with different communication protocols on the computer network;
a service program for providing the service;
installer apparatus for installing the service program in the server node, the installer apparatus using characteristics of the service program to create and store a service object in the memory, the service object comprising a network address
for the service program and a reference to a stored stack definition required to access the service; and
means for making an entry in the directory service program associating the service with the service object.
23. A client node for use in a computer network system for connecting to a server node with a selected one of a plurality of different communication protocols in response to a request by the client node for a service, the server node having
installer apparatus therein for installing a service program in the server node for providing the service, the installer apparatus using characteristics of the service program to create and store a service object in the client node memory, the service
object comprising a network address for the service and a reference to a stored stack definition required to access the service, the client node comprising:
a memory;
a dynamically programmable network stack connecting the client node to the network system;
a directory service program having means for storing in the memory stack definitions for programming the network stack to operate with different communication protocols on the network system; and
apparatus responsive to the service request for using the directory service to locate and retrieve the stored service object and for using the stack definition referenced therein to dynamically program the network stack to operate with a
communication protocol required by the service program so that the client node can receive the service without becoming involved in the details of communication protocols. |
|
|
|
|
Claims  |
|
|
Description  |
|
|
COPYRIGHT
NOTIFICATION
Portions of this patent application contain materials that are subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the
Patent and Trademark Office. All other rights are expressly reserved.
FIELD OF THE INVENTION
This invention relates, in general, to distributed computer networks and more specifically to distributed network directory and naming services.
BACKGROUND OF THE INVENTION
With the tremendous growth of data processing by means of independent, localized data processing devices, such as personal computers and mini computers, data networks have evolved to connect together physically-separated devices and to permit
digital communication among the various devices connected to the network.
There are several types of networks, including local area networks (LANs) and wide area networks (WANs). A LAN is a limited area network and data devices connected to a LAN are generally located within the same building. The LAN typically
consists of a transmission medium, such as a coaxial cable or a twisted pair which connects together various computers, servers, printers, modems and other digital devices. Each of the devices, which are collectively referred to as "nodes", is connected
to the transmission medium at an address which uniquely identifies the node and is used to route data from one node to another. A node which provides resources and services is called a "server" node and a node which uses the resources and services is
called a "client" node. A WAN generally encompasses a much larger area and may involve common carrier connections such as telephone lines.
LANs and WANs are often connected together in various configurations to form "enterprise" networks which may span different buildings or locations or extend across an entire continent. Enterprise networks are convenient for several reasons: they
allow resource sharing--programs, data and equipment are available to all nodes connected to the network without regard to the physical location of the resource and the user. Enterprise networks may also provide reliability by making several redundant
sources of data available. For example, important data files can be replicated on several storage devices so that, if one of the files is unavailable, for example, due to equipment failure, the duplicate files are available.
One of the most important characteristics of enterprise networks is that they have the capability of bringing a large and sophisticated set of services to all of the attached users for a reasonable cost. However, for the users to exploit the
network potential, they must be able to identify, locate and access the network resources. When a network is small, locating and accessing the available services is relatively simple, but networks are growing larger and there are many networks that
presently very large. Thousand node networks are common and million node networks are on the horizon.
An example of a very large network is the INTERNET network. which is used by some of the largest public and private organizations. Much of the power of this type of network goes unused simply because the users are either unaware of the
facilities available to them or they find the methods of accessing the facilities difficult or confusing. Consequently, in order to assist users in locating and accessing network resources, many existing networks today utilize network directory or
naming services which accept a resource identifier or name from a user and locate the network address that corresponds to the desired network resource.
For example, the entered identifier or name can be "descriptive" and specify a resource by describing enough of its attributes to distinguish it from other resources. Such descriptive names are most useful to human users who are searching the
network for a resource that meets certain specified criteria, but they are also require the most computing resources and are often difficult to distribute effectively. There presently exist a number standards for such descriptive name services. For
example, the Consultative Committee on International Telephony and Telegraphy (CCITT) and the International Standards Organization (ISO) have developed a standard for a descriptive name service known as X.500
Naming and directory services (these will be referred to together as "directory services" hereafter) are presently implemented in a variety of ways. The simplest implementation is to use a single, centralized database contained in a local server
node to hold a list of names and corresponding network addresses. An example of such a localized directory service is shown in FIG. 1. FIG. 1 illustrates a computer network arranged in a "client-server" configuration comprising a plurality of client
nodes 106, 108, 120, 122 and 128 which may, for example, be workstations, personal computers, minicomputers or other computing devices on which run application programs that communicate over various network links including links 102, 110, 116, 126 and
136 with each other and with server nodes, such as nodes 100, 112, 124, 132 and 138. The server nodes may contain specialized hardware devices and software programs that can provide a service or set of services to all or some of the client nodes. The
client nodes are the users of the various network services which, in turn, are provided by the server nodes.
Typically, the centralized directory service database 104 is located in one of the server nodes, such as node 100. A client node, such as client node 108, can access the directory service by connecting to server node 100, entering a resource
identifier or name and retrieving the network address of the associated service. By means of conventional database techniques, a client node may be able to search over the database in order to locate a given resource. In addition, many directory
services support browsing by using partial name descriptions, "wild cards" and placeholders.
Such centralized directory services with single databases work well in small networks where the number of network addresses is small. However, in larger networks, it is often not feasible to store all the resource identifiers in one central
location. Further, a single database represents a single point of failure which can disable the entire network. In addition, a centralized database often suffers from poor performance. For example, while it may be relatively efficient for a local
client, such as client 108, to connect to server 100 and access database 104, a remote client, such as client 120, which must link through several servers, 124 and 112, along with a "gateway" link 116, will incur a significant amount of network overhead
and the overall system "cost" of the access will be high. With a large number of remote access attempts, directory service provider 100 can quickly become both a processing and communication bottleneck for the entire network.
In order to overcome these problems, additional prior art techniques have been developed which distribute the database data over multiple locations. Such a system is shown schematically in FIG. 2. FIG. 2 depicts a client-server type of network
which is similar to that shown in FIG. 1. In particular, elements which correspond in the two figures have corresponding numeral designations. For example, client 108 in FIG. 1 is similar to client 208 in FIG. 2. The difference between the two
networks is that the directory service database has been replicated in a number of the server nodes. For example, server node 200 contains a directory service database 204 as do server nodes 212 (database 214), server node 232 (database 230) and server
node 224 (database 218). There are a number of prior art methods for replicating the data in each of the databases. Some systems replicate each resource identifier individually in each database, other systems replicate the entire database. Still other
systems replicate individual nodes or limit replication by partitioning the database in some manner.
The distributed system shown in FIG. 2 avoids the problems associated with the centralized database. Since the data is replicated, there is no single point of failure and, since the data is usually available on a nearby server node, there are no
"remote" client nodes and network overhead is greatly reduced.
However, the distributed system has its own problems. For example, some method must be used to insure data consistency if multiple sources can update the databases. Some systems force data consistency by keeping all copies of the data tightly
synchronized in a manner similar to a conventional database system. Other system insure data integrity by means of conventional concurrency arbitration schemes.
Such distributed naming and directory services are effective on homogeneous networks in which the same access methods and protocols apply over the entire network. In this case, a consistent set of names and rules can be developed to permit
location and access of various resources with relative ease. However, many large networks are heterogeneous--not only do the networks comprise many types of different computers, including work stations, personal computers, mini-computers,
super-computers and main frames, but the network itself is often composed of many independent smaller networks which are connected together by interfaces called "gateways". These smaller networks may have their own access methods and protocols.
Further, the heterogeneous construction and organization of these large networks does not lend itself to central control and management which could dictate common methods and protocols.
In many large networks which are comprised of a set of smaller networks which are connected together, each of the underlying separate networks may have its own different directory service utilizing a specific protocol. In this type of network a
user may have to be familiar with each network directory service protocol and may have to shift from protocol to protocol as searches are performed from network to network. Consequently, in such a heterogeneous network, one of the main difficulties in
accessing network resources arises from a lack of a consistent globally-accessible directory of network resources which can operate over heterogeneous networks without involving the user in the details and the protocol involved in accessing each of these
separate networks.
Accordingly, it is an object of the present invention to provide a communications directory service which provides a single globally accessible directory service which is capable of interacting with various existing directory services and other
services with existing and future which are provided on a network.
SUMMARY OF THE INVENTION
The foregoing problems are solved and the foregoing objects are achieved in one illustrative embodiment of the invention in which a communications directory service is located in each node of the network. The communications directory service
includes a tree structure to which existing directory services and other network services can be added. The tree structure has a plurality of nodes each of which includes specific methods that query and browse the associated directory service if such
actions are supported by the underlying service. The communications directory service further includes shared libraries which store a service object associated with each service offered on the network. The service object, in turn, includes the service
exchange address and communication link configuration information. A client desiring to access a remote service retrieves the appropriate service object from the communications directory service and uses the service object to set up the communications
path. In one embodiment of the invention, each node uses a reconfigurable protocol stack to establish network connections to remote nodes. The communications directory service stores a set of stack definitions which allow the reconfigurable stack to be
set up for a particular communication link. Each service object corresponding to a particular service, contains reference to one or more stack definitions for communication links appropriate to that service. When a client retrieves the service object,
one of the stack definitions is selected based on criteria such as quality of service or availability of the link.
BRIEF DESCRIPTION OF THE DRAWINGS
The above an | | |