1. A connection pacer to pace the establishment of connections in a network of servers and clients, the connection pacer comprising:
a pacing controller to receive from a server allocator server allocation information informing the pacing controller of an allocation of a server in the network performed by the server allocator, the allocated server to connect to a client in the network, the pacing controller further to send a first signal in response to receiving the server allocation information;
a server pacing status module coupled to the pacing controller, the server pacing status module to store, in response to the first signal, connection pacing status information indicating that the allocated server is in a connection pacing state, wherein the allocated server is unavailable for any allocation to establish a network connection while in the connection pacing state;
a pacing first-in-first-out (FIFO) buffer coupled to the pacing controller, the pacing FIFO buffer to store connection pacing data for one or more servers in a pacing state, wherein the pacing controller is further to update the pacing FIFO buffer in response to receiving the server allocation information, the updating including the pacing FIFO buffer storing an entry for the allocated server, the entry having,
an identifier of the allocated server, and
a removal trigger time indicating a time when the allocated server can be removed from the connection pacing state; and
wherein the pacing controller is further to read the entry for the allocated server at an output of the pacing FIFO buffer, the pacing controller further to perform a comparison of a first value based on the removal trigger time of the read entry with a second value based on time information from a time source, and wherein in response to the comparison, the pacing controller is further to signal the server pacing status module to remove the allocated server from the connection pacing state, the removing including storing connection pacing status information indicating that the allocated server is available to establish a connection.
2. The connection pacer of claim 1, wherein the removal trigger time of the entry is the time such entry may be removed from connection pacing state.
3. The connection pacer of claim 1, wherein the removal trigger time of the entry is the time the allocated server was placed into connection pacing state.
4. The connection pacer of claim 1, further comprising:
a server allocator in communication with the server pacing status module, the server allocator to choose a server in the network for establishing a connection, the choosing based at least in part on the connection pacing status information.
5. The connection pacer of claim 1
wherein the pacing FIFO buffer is one of a plurality of pacing FIFO buffers in a pacing database of the connection pacer, the pacing database including a pacing FIFO buffer for each network server supported by the connection pacer, each pacing FIFO buffer having a server pacing period associated with it, wherein an entry associated with a server is placed in a pacing FIFO buffer that has a server pacing period corresponding to a server pacing period of the server, each pacing FIFO buffer to present as output a longest-stored entry.
6. The connection pacer of claim of claim 1 wherein the pacing FIFO buffer is a linked list.
7. The connection pacer of claim 2 wherein the pacing controller comprises:
a server pacing period to determine an amount of time a server in the network will be in a connection pacing state;
an adder to compute the removal trigger time of the allocated server by adding a first current time to the determined amount of time from the server pacing period;
a comparator to indicate that a second current time is greater than or equal to the removal trigger time of the allocated server; and
a write pacing status coupled to the comparator and the pacing FIFO buffer, the write pacing status to indicate, based at least in part on the output of the comparator and the pacing FIFO buffer, that the allocated server is to be removed from connection pacing state.
8. The connection pacer of claim 3 wherein the pacing controller comprises:
a server pacing period to determine an amount of time a server in the network will be in a connection pacing state;
an adder to compute the time at which the allocated server may be removed from connection pacing state by adding the removal trigger time of the entry and the determined amount of time from the server pacing period;
a comparator to indicate that a current time is greater than or equal to the computed time at which the allocated server may be removed from connection pacing state; and
a write pacing status coupled to the comparator and the pacing FIFO buffer, the write pacing status to indicate, based at least in part on the output of the comparator and the pacing FIFO buffer, that the allocated server is to be removed from connection pacing state.
9. The connection pacer of claim 5 further comprising:
a pacing period selection module to receive server allocation information and to produce the server pacing period for the server associated with the server allocation information;
an adder to compute the removal trigger time by adding the current time to the pacing period from the pacing period selection module, the adder further to provide the computed time to the pacing database for recordation;
a FIFO selection module to provide an indication of one of the pacing FIFO buffers in the pacing database;
an mt multiplexor to receive the indication from the FIFO selection module and the times at which the servers associated with the entries presented as outputs from the pacing database may be removed from connection pacing state, the mt multiplexor to select one of the times based upon the indication from the FIFO selection module;
an ms multiplexor to receive the indication from the FIFO selection module and the server information associated with the entries presented as outputs from the pacing database, the ms multiplexor to select the server information of one of the servers based upon the indication from the FIFO selection module, wherein the server information selected by the ms multiplexor is associated with the time selected by the mt multiplexor;
a single comparator to indicate that a current time is greater than or equal to the time selected by the mt multiplexor; and
a write pacing status coupled to the comparator and the ms multiplexor, the write pacing status to receive (a) server allocation information, and (b) the outputs of the comparator and the ms multiplexor, the write pacing status to indicate that a server may be removed from connection pacing state.
10. The connection pacer of claim 5 wherein the pacing controller comprises:
a pacing period selection module to receive server allocation information and to produce the server pacing period for the server associated with the server allocation information;
an adder to compute a removal trigger time for the associated server by adding a first current time to a pacing period from the pacing period selection module, the adder further to provide the computed removal trigger time to the pacing database for recordation;
a plurality of comparators, one comparator associated with each pacing FIFO buffer, each comparator to indicate that a second current time is greater than or equal to the time associated with the entry presented as output by the each pacing FIFO buffer;
an arbitration module to receive the outputs of the comparators and the server information of entries presented as outputs of the pacing FIFO buffers, the arbitration module to select the server information of one of the entries from the pacing FIFO buffers based on the received outputs of the comparators; and
a write pacing status coupled to the arbitration module to receive (a) the server allocation information associated with the entries presented as outputs by the pacing FIFO buffers, and (b) the output of the arbitration module, the write pacing status further to indicate that a server may be removed from connection pacing state.
11. The connection pacer of claim 9 wherein the pacing controller is capable of informing a server allocator of the removal of a server from connection pacing state.
12. The connection pacer of claim 9 wherein the FIFO selection module uses a round robin method of selection.
13. The connection pacer of claim 9 wherein the pacing period selection module comprises:
a select function module to receive server allocation information and to produce a period index associated with the server allocation information;
a server pacing configuration data module containing a set of period selects for each server in the network, the server pacing configuration data module to receive the period index output by the select function module and to produce a period select; and
a pacing period module containing a set of time periods for which a server may be placed into connection pacing state, the pacing period module to receive the period select output produced by the server pacing configuration data module, the pacing period module further to produce a server pacing period for input into the adder in the pacing controller.
14. A method to pace the establishment of connections in a network of servers, comprising:
receiving at a pacing controller server allocation information sent from a server allocator, the server allocation information informing the pacing controller of an allocation of a server in the network performed by the server allocator, the allocated server to connect to a client in the network;
the pacing controller sending a first signal to a server pacing status module in response to receiving the server allocation information;
storing connection pacing status information by the server pacing status module, the storing in response to the first signal, the connection pacing status information indicating that the allocated server is in a connection pacing state, wherein the allocated server is unavailable for any allocation to establish a network connection while in the connection pacing state;
in response to the receiving the server allocation information, the pacing controller updating a pacing first-in-first-out (FIFO) buffer storing connection pacing data for one or more servers in pacing state, the updating including the pacing FIFO buffer storing an entry for the allocated server, the entry having,
an identifier of the allocated server, and
a removal trigger time indicating a time when the allocated server can be removed from the connection pacing state;
the pacing controller reading the entry for the allocated server at an output of the pacing FIFO buffer;
the pacing controller performing a comparison of a first value based on the removal trigger time of the read entry with a second value based on time information from a time source; and
in response to the comparison, the pacing controller signaling the server pacing status module to remove the allocated server from the connection pacing state, the removing including storing connection pacing status information indicating that the allocated server is available to establish a connection.
15. The method of claim 14 further comprising:
determining a removal time at which the allocated server may be removed from the pacing state; and
wherein the removal trigger time of the entry includes the determined removal time.
16. The method of claim 14 wherein updating the pacing FIFO buffer comprises:
determining a server pacing period for the allocated server;
determining a first current time that the allocated server is placed into a pacing state; and
storing the entry for the allocated server in the pacing FIFO buffer based on the pacing FIFO buffer having associated with it a server pacing period corresponding to the determined server pacing period, wherein the removal trigger time of the entry is the determined first current time.
17. The method of claim 14 further comprising informing a server pacing status module of the server in connection pacing state.
18. The method of claim 14 wherein performing the comparison of the first value based on the removal trigger time of the read entry with the second value based on time information from the time source comprises:
comparing a current time with the removal trigger time of the entry for the allocated server; and
if the current time is greater than or equal to the removal trigger time of the entry for the allocated server, removing the server from connection pacing state.
19. The method of claim 14 wherein storing an entry in the pacing FIFO buffer comprises:
determining a first current time;
determining a server pacing period for the allocated server;
determining a removal time at which the allocated server may be removed from the pacing state by adding the first current time to the server pacing period;
selecting the pacing FIFO buffer amongst a plurality of pacing FIFO buffers in a pacing database, each of the plurality of pacing FIFO buffers associated with a different respective server pacing period, the pacing FIFO buffer having associated with it a server pacing period corresponding to the server pacing period of the allocated server; and
storing in the selected pacing FIFO buffer.
20. The method of claim 14 wherein updating the pacing FIFO buffer comprises:
determining a first current time;
determining a server pacing period for the allocated server;
selecting the pacing FIFO buffer amongst a plurality of pacing FIFO buffers in a pacing database, the selected pacing FIFO buffer having associated with it a server pacing period corresponding to the server pacing period of the allocated server; and
storing in the selected pacing FIFO buffer an entry, wherein the removal trigger time of the entry is the determined first current time.
21. The method of claim 15 wherein determining a removal time at which the allocated server may be removed from the pacing state comprises:
determining a current time;
determining a server pacing period for the allocated server; and
adding the current time to the server pacing period.
22. The method of claim 16 wherein performing the comparison of the first value based on the removal trigger time of the read entry with the second value based on time information from the time source comprises:
determining a second current time;
calculating a time the allocated server is to be removed from pacing state by adding the server pacing period to the removal trigger time of the entry for the allocated server;
comparing the second current time with the calculated time; and
if the second current time is greater than or equal to the calculated time, removing the first server from pacing state.
23. The method of claim 18 further comprising selecting one pacing FIFO buffer entry amongst a plurality of pacing FIFO buffer entries, each entry presented as output from a different respective pacing FIFO buffer in a pacing database.
24. The method of claim 19 further comprising informing a server pacing status module that the server is in a connection pacing state.
25. The method of claim 19 wherein performing the comparison of the first value based on the removal trigger time of the read entry with the second value based on time information from the time source comprises:
selecting one entry amongst a plurality of entries presented as output of the pacing database;
determining a second current time;
comparing the second current time with the removal time of the selected entry; and
if the second current time is greater than or equal to the removal time of the selected entry selected, removing the server associated with the selected entry from pacing state.
26. The method of claim 19 wherein determining the server pacing period for the server comprises:
receiving server allocation information from the server allocator;
determining a period index based on the server allocation information;
looking up a period select in a server pacing configuration data module using the period index; and
determining the server pacing period for the server associated with the server allocation information, the determining based on the period select.
27. The method of claim 20 wherein performing the comparison of the first value based on the removal trigger time of the read entry with the second value based on time information from the time source comprises:
selecting one entry amongst a plurality of entries presented as output of the pacing database;
determining a second current time;
determining a removal time at which the allocated server may be removed from the pacing state by adding the second current time to the server pacing period of the server;
comparing a current time with the determined removal time; and
if the second current time is greater than or equal to the removal time, removing the allocated server from pacing state.
28. The method of claim 21 wherein determining the server pacing period for the allocated server comprises:
receiving server allocation information from a server allocator;
determining a period index based on the server allocation information;
looking up a period select in a server pacing configuration data module using the period index; and
determining the server pacing period for the server associated with the server allocation information, the determining based on the period select.
29. The method of claim 23 wherein further comprising removing from the pacing database the selected entry from the pacing FIFO buffer from which the selected entry came and sending a notice of removal of the server associated with the selected entry from pacing state.
30. The method of claim 25 wherein removing the server associated with the entry from pacing state comprises removing the entry from the pacing FIFO buffer in the pacing database from which the entry came and sending a notice of removal of the server from connection pacing state.
31. The method of claim 29 wherein the notice of removal of the server associated with the selected entry from pacing state is sent to a server allocator.
32. The method of claim 29, wherein the notice of removal of the server associated with the selected entry from pacing state is sent to a server pacing status module.
33. The method of claim 30 wherein the notice of removal of the server from connection pacing state is sent to a server allocator.
34. The method of claim 30 wherein the notice of removal of the server from connection pacing state is sent to a server pacing status module.
35. A connection pacer to pace the establishment of connections in a network of servers and clients, comprising:
controller means to receive from a server allocator server allocation information informing the controller means of an allocation of a server in the network performed by the server allocator, the allocated server to connect to a client in the network, the controller means further to send a first signal in response to receiving the server allocation information;
a server pacing status module coupled to the controller means, the server pacing status module to store, in response to the first signal, connection pacing status information indicating that the allocated server is in a connection pacing state, wherein the allocated server is unavailable for any allocation to establish a network connection while in the connection pacing state;
storage means to store connection pacing data for one or more servers in a pacing state, wherein the controller means is further to update the storage means in response to receiving the server allocation information, the updating including the storage means storing an entry for the allocated server, the entry having,
an identifier of the allocated server, and
a removal trigger time indicating a time when the allocated server can be removed from the connection pacing state,
wherein the storage means is to present as output an entry that has been in the storage means the longest; and
wherein the controller means is further to read the entry for the allocated server as the output of the storage means, the controller means further to perform a comparison of a first value based on the removal trigger time of the read entry with a second value based on time information from a time source, and wherein in response to the comparison, the controller means is further to signal the server pacing status module to remove the allocated server from the connection pacing state, the removing including storing connection pacing status information indicating that the allocated server is available to establish a connection.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A method for transmitting a message, comprising the steps of
encrypting said message to develop an encrypted message, said encrypted message being decryptable using a first decryption key;
encrypting said first decryption key with encryption keys of a plurality of target recipients, to develop a plurality of encrypted decryption keys; and
transmitting said encrypted message and said encrypted decryption keys to said target recipients.
2. A method according to claim 1, wherein said step of encrypting said message comprises the step of encrypting said message with a symmetric encryption algorithm.
3. A method according to claim 1, wherein said step of encrypting said message comprises the step of encrypting said message with an asymmetric encryption algorithm.
4. A method according to claim 1, wherein said step of encrypting said first decryption key, with respect to a first one of said target recipients, comprises the step of encrypting said first decryption key with a symmetric encryption algorithm.
5. A method according to claim 1, wherein said step of encrypting said first decryption key, with respect to a first one of said target recipients, comprises the step of encrypting said first decryption key with an asymmetric encryption algorithm.
6. A method according to claim 1, wherein said step of encrypting said first decryption key, with respect to a first one of said target recipients, comprises the steps of:
encrypting said decryption key with a key of an additional party, to develop a partially encrypted decryption key; and
encrypting said partially encrypted decryption key with the key of said first target recipient.
7. A method according to claim 1, wherein said step of transmitting comprises the step of broadcasting said encrypted message and said encrypted decryption keys to a plurality of listeners, not all of which are members of said plurality of target recipients.
8. A method according to claim 1, wherein said step of transmitting comprises the steps of:
sending said encrypted message to a server; and
said server forwarding said encrypted message to each of said target recipients.
9. A method according to claim 8, wherein said step of transmitting further comprises the step of sending said encrypted decryption keys to one of said target recipients bypassing said server.
10. A method according to claim 8, wherein said step of transmitting further comprises the step of sending said encrypted decryption keys to said server.
11. A method according to claim 10, further comprising the step of sending to said server an additional encrypted decryption key, encrypted with a key of an additional target recipient, after said step of sending said encrypted decryption keys to said server.
12. A method according to claim 10, further comprising the step of deleting or changing one of said encrypted decryption keys on said server after said step of sending said encrypted decryption keys to said server.
13. A method according to claim 10, further comprising the step of sending to said server a digital signature covering at least one of said encrypted decryption keys.
14. A method according to claim 10, further comprising the step of sending to said server a digital signature covering all of said encrypted decryption keys.
15. A method for receiving a message, comprising the steps of:
receiving an encrypted message, said encrypted message being decryptable using a first decryption key;
receiving in conjunction with said encrypted message a plurality of encrypted decryption keys for said encrypted message;
decrypting a particular one of said encrypted decryption keys to recover said first decryption key; and
decrypting said encrypted message using said first decryption key.
16. A method according to claim 15, wherein said step of decrypting a particular encrypted decryption key comprises the steps of:
decrypting said encrypted decryption key with a key of a first party, to develop a partially decrypted decryption key; and
decrypting said partially decrypted decryption key with a key of a second party.
17. A method according to claim 15, wherein said step of receiving an encrypted message comprises the step of receiving said encrypted message from a server.
18. A method according to claim 17, wherein said step of receiving a plurality of encrypted decryption keys comprises the step of receiving said plurality of encrypted decryption keys bypassing said server.
19. A method according to claim 17, wherein said step of receiving a plurality of encrypted decryption keys comprises the step of accessing said server, said plurality of encrypted decryption keys being stored on said server.
20. A method according to claim 17, wherein said step of receiving a plurality of encrypted decryption keys comprises the step of a user accessing said server, said plurality of encrypted decryption keys being stored on said server in conjunction with said encrypted message, said server permitting access to only those messages stored thereon for which said user is a target recipient.
21. A method according to claim 15, further comprising the step of downloading said encrypted message from said server prior to said step of decrypting said encrypted message using said first decryption key.
22. Apparatus including at least one computer readable storage medium, said apparatus carrying data comprising:
an encrypted message, said encrypted message being decryptable using a first decryption key; and
a plurality of encrypted decryption keys stored in conjunction with said encrypted message, each of said encrypted decryption keys including said first decryption key encrypted with an encryption key of a respective target recipient of said message.
23. Apparatus according to claim 22, wherein one of said target recipients is a monitor.
24. Apparatus according to claim 22, wherein said data further comprises a digital signature protecting at least a portion of said encrypted decryption keys.