WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Object-oriented distributed communications directory service    
United States Patent6031977   
Link to this pagehttp://www.wikipatents.com/6031977.html
Inventor(s)Pettus; Christopher Edward (San Francisco, CA)
AbstractOn 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 Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 6031977
Object-oriented distributed communications directory service - US Patent 6031977 Drawing
Object-oriented distributed communications directory service
Inventor     Pettus; Christopher Edward (San Francisco, CA)
Owner/Assignee     Object Technology Licensing Corp. (Cupertino, CA)
Patent assignment
All assignments
Publication Date     February 29, 2000
Application Number     08/573,899
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     December 18, 1995
US Classification    
Int'l Classification    
Examiner     Geckil; Mehmet B.
Assistant Examiner    
Attorney/Law Firm     Kudirka & Jobse
Address
Parent Case     This is a continuation of application Ser. No. 08/169,864 filed Dec. 17, 1993 now abandoned.
Priority Data    
USPTO Field of Search    
Patent Tags     object-oriented distributed communications directory service
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5515508
Pettus
709/203
May,1996

[0 after 0 votes]
5481735
Mortensen
709/246
Jan,1996

[0 after 0 votes]
5448566
Richter
370/431
Sep,1995

[0 after 0 votes]
5414812
Filip
707/103R
May,1995

[0 after 0 votes]
5408619
Oran
707/10
Apr,1995

[0 after 0 votes]
5404529
Chernikoff
719/315
Apr,1995

[0 after 0 votes]
5339435
Lubkin
717/121
Aug,1994

[0 after 0 votes]
5317568
Bixby
370/401
May,1994

[0 after 0 votes]
5303344
Yokoyama
709/230
Apr,1994

[0 after 0 votes]
5282270
Oppenheimer
709/223
Jan,1994

[0 after 0 votes]
5265239
Ardolino
709/217
Nov,1993

[0 after 0 votes]
5181162
Smith
715/530
Jan,1993

[0 after 0 votes]
5151987
Abraham
714/20
Sep,1992

[0 after 0 votes]
5136716
Harvey
709/228
Aug,1992

[0 after 0 votes]
5136705
Stubbs
714/27
Aug,1992

[0 after 0 votes]
5133075
Risch
707/201
Jul,1992

[0 after 0 votes]
5125091
Staas, Jr.
718/101
Jun,1992

[0 after 0 votes]
5119475
Smith
715/866
Jun,1992

[0 after 0 votes]
5093914
Coplien
717/129
Mar,1992

[0 after 0 votes]
5075848
Lai

Dec,1991

[0 after 0 votes]
5060276
Morris
382/151
Oct,1991

[0 after 0 votes]
5050090
Golub
700/217
Sep,1991

[0 after 0 votes]
5041992
Cunningham
345/641
Aug,1991

[0 after 0 votes]
4953080
Dysart
707/103R
Aug,1990

[0 after 0 votes]
4891630
Friedman
345/156
Jan,1990

[0 after 0 votes]
4885717
Beck
717/125
Dec,1989

[0 after 0 votes]
4821220
Duisberg
703/2
Apr,1989

[0 after 0 votes]
4614841
Babecki
379/93.29
Sep,1986

[0 after 0 votes]
5388213
Oppenheimer
709/245
Dec,1969

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


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.
 Description Submit all comments and votes
 


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