CA2532995C

System and method for determining a designated connection between components of computing devices

Abstract

A system and method for identifying a single, designated connection from one or more connections (e.g. TCP connections) that may have been established between two components for data communications. Each component is associated with a component identifier that is generated by an identifier generating algorithm adapted to ensure that component identifiers generated by the algorithm are orderable and substantially unique. For example, Universally Unique Identifiers may be generated for this purpose. Each component in the distributed system can be uniquely identified by its component identifier, and the component identifiers facilitate the identification of each component as either a controller or responder in a determination of whether a particular connection should be identified as the designated connection. In one embodiment, that particular connection is identified as the designated connection unless an earlier established connection exists that neither the first component nor the second component knows to be broken. In that case, the earlier established connection may be identified as the designated connection.

CA2532995C, drawing sheet 1
Sheet 1 of 7

Term

Term ended

Expired 16 January 2026, 0.7 years ago.

  1. Priority
  2. Filed
  3. Granted
  4. Expired
  5. Today

76 claims: 45 independent, 31 dependent

  1. 1
    CA 02532995 2009-07-03 Claims:1. A system for determining a designated connection between a first component residing on a computing device and a second component residing on a computing device, each component capable of initiating the establishment of connections that facilitate data communication to the other, wherein the system comprises: means for associating a respective component identifier with each of the first and second components, wherein the respective component identifiers are unique, orderable identifiers;means for establishing a current connection between the first and second components;means for transmitting and receiving component identifiers between each of the first and second components to and from the other;means for identifying one of the first and second components as a controller and the other as a responder based on a comparison of the relative order position of the component identifiers associated with the first and second components;and means for determining a designated connection between the first and second components adapted to, upon initiation by the component identified as the controller, determine whether at least one connection other than the current connection that neither the first nor the second component knows to be broken exists, and to identify a connection from a group that comprises the current connection and the at least one connection other than the current connection as the designated connection when the at least one connection other than the current connection is determined to exist, and the current connection as the designated connection when the at least one connection other than the current connection is determined not to exist. CA 02532995 2009-07-03
  2. 4
    The system of any of claims 1 to 3, wherein the first and second components reside on different computing devices.
  3. 5
    The system of any of claims 1 to 3, wherein the first and second components reside on the same computing device.
  4. 6
    The system of any of claims 1 to 5, wherein each of the first and second components is a process executing on the computing device on which each respective component resides.
  5. 7
    The system of any of claims 1 to 6, wherein each component identifier is a Universally Unique Identifier.
  6. 8
    The system of any of claims 1 to 7, wherein the component of the first and second components with the higher-valued associated component identifier is identified as the controller, and wherein the other of the first and second components is identified as the responder.
  7. 9
    The system of any of claims 1 to 8, wherein any connection between the first and second components is a Transmission Control Protocol connection.
  8. 10
    The system of any of claims 1 to 9, wherein the connection identified as the designated connection is a connection established before the current connection. CA 02532995 2009-07-03
  9. 12
    The system of any of claims 1 to 11, wherein the means for determining a designated connection between the first and second components is further adapted to identify at least one connection not determined as the designated connection where such at least one connection exists, and to terminate the identified at least one connection.
  10. 14
    The system of any of claims 1 to 13, wherein the system comprises first and second connection data tables maintained by the first and second components respectively, and wherein the first and second connection data tables store data pertaining to connections to other components from the first and second components respectively, and wherein the means for determining a designated connection between the first and second components is further adapted to access said first and second connection tables when determining the designated connection.
  11. 15
    A method for determining a designated connection between a first component residing on a computing device and a second component residing on a computing device, each component capable of initiating the establishment of connections that facilitate data communication to the other, wherein the method comprises the following steps performed at each of the first and second components:associating a component identifier with the respective component, wherein the component identifiers associated with the first and second components are unique, orderable identifiers;establishing a current connection between the respective component and the other of the first and second components;CA 02532995 2009-07-03 transmitting the component identifier for the respective component to the other component, and receiving a component identifier for the other component from the other component;identifying the respective component as one of a controller and a responder based on a comparison of the relative order position of the component identifiers associated with the first and second components;and determining a designated connection between the first and second components by determining whether at least one connection other than the current connection that neither the first nor the second component knows to be broken exists, and identifying a connection from a group that comprises the current connection and the at least one connection other than the current connection as the designated connection when the at least one connection other than the current connection is determined to exist, and the current connection as the designated connection when the at least one connection other than the current connection is determined not to exist;and wherein the determining step is initiated by the respective component if the respective component is identified as the controller in the identifying step.
  12. 18
    The method of any of claims 15 to 17, wherein the first and second components reside on different computing devices. CA 02532995 2009-07-03
  13. 19
    The method of any of claims 15 to 17, wherein the first and second components reside on the same computing device.
  14. 20
    The method of any of claims 15 to 19, wherein each of the first and second components is a process executing on the computing device on which each respective component resides.
  15. 21
    The method of any of claims 15 to 20, wherein the component identifier generated for the respective component is a Universally Unique Identifier.
  16. 22
    The method of any of claims 15 to 21, wherein the respective component is identified as the controller at the comparing step if the component identifier associated with the respective component is higher-valued than the component identifier associated with the other component.
  17. 23
    The method of any of claims 15 to 22, wherein any connection between the first and second components is a Transmission Control Protocol connection.
  18. 26
    The method of any of claims 15 to 24, further comprising the steps of:identifying at least one connection not determined as the designated connection at the determining step, where such at least one connection exists;and terminating the identified at least one connection. CA 02532995 2009-07-03
  19. 28
    The method of any of claims 15 to 27, wherein the determining step comprises accessing a connection data table maintained by the respective component when performing said determining step, wherein the connection data table stores data pertaining to connections to other components from the respective component.
  20. 29
    A computer-readable medium upon which a program executable on at least one of the first and second computing devices is stored, wherein the program comprises instructions for performing the steps of the method as claimed in any of claims 15 to 28.
  21. 30
    A system for determining a designated connection between a first component residing on a first computing device and a second component residing on a second computing device, each component capable of initiating the establishment of connections that facilitate data communication to the other, wherein the system comprises a first application and a second application associated with the first and second components respectively, and wherein the first and second applications are programmed to co-operate to perform the steps of:a) generating a component identifier for each of the first and second components in accordance with an identifier generating algorithm;b) identifying a current connection between the first and second components;c) transmitting and receiving component identifiers between each of the first and second components to and from the other;d) comparing a relative order position of the component identifiers for the first and second components to identify one of the first and second components as a controller and the other as a responder;and CA 02532995 2009-07-03 e) determining a designated connection between the first and second components, said step initiated by the component identified as the controller and comprising the substeps of i) determining whether at least one connection other than the current connection exists between the first and second components that neither the first component nor the second component knows to be broken, ii) if said at least one connection other than the current connection does not exist, identifying the current connection as the designated connection, and iii) if said at least one connection other than the current connection exists, identifying a connection as the designated connection from a group that includes the current connection and the at least one connection other than the current connection;wherein the identifier generating algorithm is adapted to ensure that component identifiers generated by the algorithm are orderable and substantially unique.
  22. 33
    The system of any one of claims 30 to 32, wherein each component identifier generated at the generating step is a Universally Unique Identifier.
  23. 34
    The system of any one of claims 30 to 33, wherein the component of the first and second components with the higher-valued component identifier therefor is identified as the controller at the comparing step, and wherein the other component is identified as the responder at the comparing step. CA 02532995 2009-07-03
  24. 35
    The system of any one of claims 30 to 34, wherein each of the current and designated connections is a Transmission Control Protocol connection.
  25. 36
    The system of any one of claims 30 to 35, wherein the connection identified as the designated connection at substep iii) is a connection established before the current connection.
  26. 38
    The system of any one of claims 30 to 37, wherein the first and second applications are programmed to co-operate to perform the further steps of:f) identifying at least one connection not determined as the designated connection at step e), where such at least one connection exists;and g) terminating the at least one connection identified at step f).
  27. 40
    The system of any one of claims 30 to 39, wherein the system comprises first and second connection tables maintained by the first and second components respectively, and wherein the first and second connection tables store data pertaining to connections to other components from the first and second components respectively, and wherein step e) comprises accessing said first and second connection tables when performing said determining step.
  28. 41
    A method of determining a designated connection between a first component residing on a first computing device and a second component residing on a second computing device, each component capable of initiating the establishment of connections that facilitate data communication to the other, and wherein the method comprises the following steps performed at each of the first and second components:CA 02532995 2009-07-03 a) generating a component identifier for the respective component in accordance with an identifier generating algorithm;b) identifying a current connection between the respective component and the other of the first and second components;c) transmitting the component identifier for the respective component to the other component, and receiving a component identifier for the other component from the other component;d) performing a comparison based on a relative order position of the component identifiers for the respective component and the other component, to identify the respective component as one of a controller and a responder;and e) determining a designated connection between the respective component and the other component, said step initiated by the respective component if the respective component is identified as the controller and comprising the substeps of i) determining whether at least one connection other than the current connection exists between the respective component and the other component that neither the respective component nor the other component knows to be broken, ii) if said at least one connection other than the current connection does not exist, identifying the current connection as the designated connection, and iii) if said at least one connection other than the current connection exists, identifying a connection as the designated connection from a group that includes the current connection and the at least one connection other than the current connection;wherein the identifier generating algorithm is adapted to ensure that component identifiers generated by the algorithm are orderable and substantially unique. CA 02532995 2009-07-03
  29. 44
    The method of any one of claims 41 to 43, wherein the component identifier generated for the respective component is a Universally Unique Identifier.
  30. 45
    The method of any one of claims 41 to 44, wherein the respective component is identified as the controller at the comparing step if the component identifier for the respective component is higher-valued than the component identifier for the other component.
  31. 46
    The method of any one of claims 41 to 45, wherein each of the current and designated connections is a Transmission Control Protocol connection.
  32. 47
    The method of any one of claims 41 to 46, wherein the connection identified as the designated connection at substep iii) is a connection established before the current connection.
  33. 49
    The method of any one of claims 41 to 48, further comprising the steps of:f) identifying at least one connection not determined as the designated connection at step e), where such at least one connection exists;and g) terminating the at least one connection identified at step f).
  34. 51
    The method of any one of claims 41 to 50, wherein step e) comprises accessing first and second connection tables maintained by the first and second components respectively when performing said determining step, wherein the first and second connection tables store data pertaining to connections to other components from the first and second components respectively.
  35. 52
    A computer-readable medium upon which a program executable on at least one of the first and second computing devices is stored, wherein the medium comprises instructions for performing the steps of the method as claimed in any one of claims 41 to 51.
  36. 53
    A computing device comprising a first component capable of initiating the establishment of a connection that facilitates data communication to a second component, said computing device configured to:generate a component identifier for the first component in accordance with an identifier generating algorithm;identify a current connection between the first and second components;transmit the component identifier for the first component to the second component;receive a component identifier for the second component;perform a comparison based on a relative order position of the component identifiers for the first and second components to identify the first component as one of a controller and a responder;and initiate an establishing of a designated connection between the first and second components if the first component is identified as the controller, said establishing comprising determining whether at least one connection other than the current connection exists between the first and second components that neither the first and second components knows to be broken, if said at least one connection other than the current connection does not exist, identifying the current connection as the designated connection, and CA 02532995 2009-07-03 if said at least one connection other than the current connection exists, identifying a connection as the designated connection from a group that includes the current connection and the at least one connection other than the current connection;wherein the identifier generating algorithm is adapted to ensure that component identifiers generated by the algorithm are orderable and substantially unique.
  37. 56
    The computing device of any one of claims 53 to 55, wherein the first component is a process executing on the computing device.
  38. 57
    The computing device of any one of claims 53 to 56, wherein the component identifier generated for the first component is a Universally Unique Identifier.
  39. 58
    The computing device of any one of claims 53 to 57, wherein the first component is identified as the controller if the component identifier for the first component is higher-valued than the component identifier for the second component.
  40. 59
    The computing device of any one of claims 53 to 58, wherein each of the current and designated connections is a Transmission Control Protocol connection.
  41. 60
    The computing device of any one of claims 53 to 59, wherein the connection identified as the designated connection from the group is a connection established before the current connection. CA 02532995 2009-07-03
  42. 61
    The computing device of any one of claims 53 to 60, wherein the connection identified as the designated connection from the group is a connection that has been previously identified as a designated connection.
  43. 62
    The computing device of any one of claims 53 to 61, further configured to:identify at least one connection not determined as the designated connection, where such at least one connection exists;and terminate the at least one connection not determined as the designated connection.
  44. 64
    The computing device of any one of claims 53 to 63, further configured to access a connection table maintained by the first component when performing said determining, wherein the connection table stores data pertaining to connections to other components from the first component.
  45. 65
    A computer-readable medium upon which a program executable on a computing device is stored, the computing device comprising a first component capable of initiating the establishment of a connection that facilitates data communication to a second component, the instructions for performing acts comprising:generating a component identifier for the first component in accordance with an identifier generating algorithm;identifying a current connection between the first and second components;transmitting the component identifier for the first component to the second component;receiving a component identifier for the second component;performing a comparison based on a relative order position of the component identifiers for the first and second components to identify the first component as one of a controller and a responder;and CA 02532995 2009-07-03 initiating an establishing of a designated connection between the first and second components if the first component is identified as the controller, said establishing comprising determining whether at least one connection other than the current connection exists between the first and second components that neither the first and second components knows to be broken, if said at least one connection other than the current connection does not exist, identifying the current connection as the designated connection, and if said at least one connection other than the current connection exists, identifying a connection as the designated connection from a group that includes the current connection and the at least one connection other than the current connection;wherein the identifier generating algorithm is adapted to ensure that component identifiers generated by the algorithm are orderable and substantially unique.
  46. 68
    The medium of any one of claims 65 to 67, wherein the first component is a process executing on the computing device.
  47. 69
    The medium of any one of claims 65 to 68, wherein the component identifier generated for the first component is a Universally Unique Identifier.
  48. 70
    The medium of any one of claims 65 to 69, wherein the first component is identified as the controller if the component identifier for the first component is higher-valued than the component identifier for the second component. CA 02532995 2009-07-03
  49. 71
    The medium of any one of claims 65 to 70, wherein each of the current and designated connections is a Transmission Control Protocol connection.
  50. 72
    The medium of any one of claims 65 to 71, wherein the connection identified as the designated connection from the group is a connection 5 established before the current connection.
  51. 73
    The medium of any one of claims 65 to 72, wherein the connection identified as the designated connection from the group is a connection that has been previously identified as a designated connection.
  52. 74
    The medium of any one of claims 65 to 73, the acts further comprising:10 identifying at least one connection not determined as the designated connection, where such at least one connection exists;and terminating the at least one connection not determined as the designated connection.
  53. 76
    The medium of any one of claims 65 to 75, wherein a connection table maintained by the first component is accessed when performing said determining, wherein the connection table stores data pertaining to connections to other components from the first component.
Independent claims53