Persistent distributed capabilities
First Claim
1. A system providing persistent capabilities for distributed systems, comprising:
- a plurality of processes;
programs executing in at least a subset of said processes;
objects allocated in said subset of said processes;
communications channels between those of said plurality of processes that are in communication;
a pair of transports allocated to each pair of said processes for which inter-process communications are available, wherein a first transport of the pair of transports is located in a first process of the pair of processes and a second transport of the pair of transports is located in a second process of the pair of processes, each transport including;
an in-table with indexed in-table slots;
an out-table with indexed out-table slots; and
a data structure for storing an encryption key, agreed upon with the other transport of the pair of transport;
respective ones of said out-table slots of the first transport of said pair of transports and said in-table slots of the second transport of said pair of transports being linked;
a plurality of proxies, each resident in a respective one of the processes and linked to a respective object that is resident in a different process via one of said linked slots, said proxies and pairs of transports enabling a first object in a first process to communicate transparently with a second object in a second process via a corresponding proxy in said first process linked to said second object;
wherein the communications between the first and second objects are communications encrypted using the encryption key stored in the pair of transports allocated to the pair of processes comprising the first and second processes;
said programs being configured, upon detecting a problem communicating with any of said remote processes via said communications channels, to disable the proxies of said plurality proxies that are no longer able to communicate with their respective objects due to the communication problem and to delete the encryption key stored in each pair of the transports corresponding to the disabled proxies and their respective objects, and when said communications problem is remedied so that communications with said affected remote processes are restored, to revive said disabled proxies and to establish and store a new encryption key in each of the corresponding pairs of transports.
1 Assignment
0 Petitions
Accused Products
Abstract
A system and method is disclosed that provides persistent capabilities for distributed, object-oriented applications running on generally available hardware. The disclosed system and method operate in a transparent distributed object system where inter-process messaging between the program objects is effected by paired transport managers, proxies and matched in-table and out-table slots. Each object needing to communicate with an object in another address space does so by transparently issuing messages to that object'"'"'s local proxy. Each process provides a registrar that includes a secret code table wherein an object is registered with a unique, practically unguessable secret code. Anticipating the need to re-establish object-proxy links following a inter-process communications fault, proxies are made revivable, meaning that their links with corresponding remote objects can be revived following a communications interruption. This is accomplished by a makeRevivable method that stores a revivable proxy'"'"'s expiration date (the date beyond which the proxy is not revivable) and its corresponding remote object'"'"'s secret code into the proxy'"'"'s out-table slot. Upon the occurrence of a communications fault, all transport managers and tables are nulled out and then, when the communications fault is corrected, rebuilt by the transport managers. Sometime after the restoration of communications, a revived method is invoked that restores the links between, registered objects and proxies. The objects and proxies are brought back in a consistent state based on limited checkpointed data stored by the distributed program for the registered objects.
318 Citations
18 Claims
-
1. A system providing persistent capabilities for distributed systems, comprising:
-
a plurality of processes; programs executing in at least a subset of said processes; objects allocated in said subset of said processes; communications channels between those of said plurality of processes that are in communication; a pair of transports allocated to each pair of said processes for which inter-process communications are available, wherein a first transport of the pair of transports is located in a first process of the pair of processes and a second transport of the pair of transports is located in a second process of the pair of processes, each transport including; an in-table with indexed in-table slots; an out-table with indexed out-table slots; and a data structure for storing an encryption key, agreed upon with the other transport of the pair of transport; respective ones of said out-table slots of the first transport of said pair of transports and said in-table slots of the second transport of said pair of transports being linked; a plurality of proxies, each resident in a respective one of the processes and linked to a respective object that is resident in a different process via one of said linked slots, said proxies and pairs of transports enabling a first object in a first process to communicate transparently with a second object in a second process via a corresponding proxy in said first process linked to said second object;
wherein the communications between the first and second objects are communications encrypted using the encryption key stored in the pair of transports allocated to the pair of processes comprising the first and second processes;said programs being configured, upon detecting a problem communicating with any of said remote processes via said communications channels, to disable the proxies of said plurality proxies that are no longer able to communicate with their respective objects due to the communication problem and to delete the encryption key stored in each pair of the transports corresponding to the disabled proxies and their respective objects, and when said communications problem is remedied so that communications with said affected remote processes are restored, to revive said disabled proxies and to establish and store a new encryption key in each of the corresponding pairs of transports. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A method of providing persistent capabilities for distributed systems, comprising the steps of:
-
executing programs in a plurality of processes; allocating objects in the processes; communications channels between those of the plurality of processes that are in communication; establishing a pair of transports for each pair of the processes for which inter-process communications are available, wherein a first transport of the pair of transports is located in a first process of the pair of processes and a second transport of the pair of transports is located in a second process of the pair of processes, each transport including; an in-table with indexed in-table slots; an out-table with indexed out-table slots; and a data structure for storing an encryption key, agreed upon with the other transport of the pair of transport; respective ones of the out-table slots of the first transport of the pair of transports and the in-table slots of the second transport of the pair of transports being linked; establishing a plurality of proxies, each resident in a respective one of the processes and linked to a respective object that is resident in a different process via one of the linked slots, the proxies and pairs of transports enabling a first object in a first process to communicate transparently with a second object in a second process via a corresponding proxy in the first process linked to the second object;
wherein the communications between the first and second objects are communications encrypted using the encryption key stored in the pair of transports allocated to the pair of processes comprising the first and second processes;upon detecting a problem communicating with any of the remote processes via the communications channels, disabling the proxies of the plurality proxies that are no longer able to communicate with their respective objects due to the communication problem and to delete the encryption key stored in each pair of the transports corresponding to the disabled proxies and their respective objects, and when the communications problem is remedied so that communications with the affected remote processes are restored, reviving the disabled proxies and establishing and storing a new encryption key in each of the corresponding pairs of transports. - View Dependent Claims (17, 18)
-
Specification