Abstract:
One embodiment of the present invention provides a system that coordinates timing of events related to objects within a distributed computing system. During operation, the system receives a request to set a time base associated with an object to a current time value. This request is received through a protocol associated with the object. In response to the request, the system sets the time base associated with the object to the current time value, so that subsequent operations involving the object can be synchronized. In a variation on this embodiment, the object is defined within an object-oriented programming system, and the object is defined to include the time base.

Description:
BACKGROUND  
         [0001]    1. Field of the Invention  
           [0002]    The present invention relates to distributed computing systems. More specifically, the present invention relates to a method and an apparatus for precisely coordinating events within a distributed computing system relative to a time base.  
           [0003]    2. Related Art  
           [0004]    As computer networks continue to proliferate, it is becoming progressively easier for geographically distributed computer systems to work together in performing computational tasks. Historically, such cooperation has been restricted by significant delays and bandwidth limitations involved in communicating between geographically distributed computer systems—which may possibly be separated by thousands of miles.  
           [0005]    However, as the networking infrastructure continues to improve, these delays and bandwidth limitations have been dramatically reduced. This makes it possible for a distributed application to effectively operate on a set of geographically distributed computing nodes in the same way as a distributed application operates on a set of local computing nodes in a local cluster.  
           [0006]    However, synchronizing activities between geographically distributed computing nodes can be very challenging. Unlike computing nodes in a tightly coupled parallel processing system, geographically distributed computing nodes do not share a centralized clock signal that can be used to synchronize the computing nodes. Furthermore, unlike nodes in a local cluster, geographically distributed computing nodes do not share a local network through which synchronization commands can be sent to synchronize the computing nodes.  
           [0007]    What is needed is a method and an apparatus that facilitates synchronizing actions of a set of geographically distributed computing nodes.  
           [0008]    More specifically, what is needed is a method and an apparatus that facilitates composability of network components. Composability allows a component to be developed independently and then subsequently integrated into an ensemble of components without disturbing the ensemble or refuting prior service guarantees. Akin to an orchestra playing together, each additional instrument added to the mix must be aware of the context in which other instruments are playing, as well as the time synchronization necessary to ensure that each part being played is within reasonable temporal precision viz, the other parts.  
         SUMMARY  
         [0009]    One embodiment of the present invention provides a system that coordinates timing of events related to objects within a distributed computing system. During operation, the system receives a request to set a time base associated with an object to a current time value. This request is received through a protocol associated with the object. In response to the request, the system sets the time base associated with the object to the current time value, so that subsequent operations involving the object can be synchronized.  
           [0010]    In a variation on this embodiment, the object is defined within an object-oriented programming system, and the object is defined to include the time base.  
           [0011]    In a variation on this embodiment, the system additionally receives a request to get time the current time value. In response to this request, the system extracts the current time value from a global time base, and returns the current time value.  
           [0012]    In a variation on this embodiment, extracting the current time value from the global time base involves extracting the current time value from a Global Positioning System (GPS) signal.  
           [0013]    In a variation on this embodiment, extracting the current time value from the global time base involves extracting the current time value from a local timer that has been recently updated with reference to a Global Positioning System (GPS) signal.  
           [0014]    In a variation on this embodiment, the time base associated with the object contains an advancing time value that keeps track of time relative to a local time base.  
           [0015]    In a variation on this embodiment, the time base associated with the object contains a fixed time value.  
           [0016]    In a variation on this embodiment, the system uses the time base associated with the object to coordinate events with other entities in the distributed computing system. These other entities can include other objects with associated time bases, and may be located on other nodes in the distributed computing system.  
           [0017]    In a variation on this embodiment, the distributed computing system includes geographically distributed nodes. 
       
    
    
     BRIEF DESCRIPTION OF THE FIGURES  
       [0018]    [0018]FIG. 1 illustrates a distributed computing system in accordance with an embodiment of the present invention.  
         [0019]    [0019]FIG. 2 is a flow chart illustrating the process of using GPS signals to synchronize multiple computer systems on a stationary network in accordance with an embodiment of the present invention.  
         [0020]    [0020]FIG. 3 is a flow chart illustrating the process of servicing a request for a current time value in accordance with an embodiment of the present invention.  
         [0021]    [0021]FIG. 4 is a flow chart illustrating the process of servicing a request to set a time base associated with an object in accordance with an embodiment of the present invention. 
     
    
     DETAILED DESCRIPTION  
       [0022]    The following description is presented to enable any person skilled in the art to make and use the invention, and is provided in the context of a particular application and its requirements. Various modifications to the disclosed embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the present invention. Thus, the present invention is not limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features disclosed herein.  
         [0023]    The data structures and code described in this detailed description are typically stored on a computer-readable storage medium, which may be any device or medium that can store code and/or data for use by a computer system. This includes, but is not limited to, magnetic and optical storage devices such as disk drives, magnetic tape, CDs (compact discs) and DVDs (digital versatile discs or digital video discs), and computer instruction signals embodied in a transmission medium (with or without a carrier wave upon which the signals are modulated). For example, the transmission medium may include a communications network, such as the Internet.  
         [0024]    Distributed Computing System  
         [0025]    [0025]FIG. 1 illustrates a distributed computing system  100  in accordance with an embodiment of the present invention. Distributed computing system  100  includes a number of master computer systems  106 - 108 , which are coupled to network  120 . Master computer systems  106 - 108  can include geographically distributed computing nodes, or alternatively, can include nodes that are part of the same local network or cluster. Network  120  can generally include any type of wire or wireless communication channel capable of coupling together computer systems. This includes, but is not limited to, a local area network, a wide area network, or a combination of networks. In one embodiment of the present invention, network  120  includes the Internet.  
         [0026]    Note that master computer system  106  communicates with slave computer systems  131 - 133 , and master computer system  108  communicates with slave computer systems  134 - 136 . This communication can take place through separate local area networks, or alternatively, through network  120 .  
         [0027]    Master computer systems  104 - 106  and slave computer systems  131 - 136  can generally include any type of computer system, including, but not limited to, a computer system based on a microprocessor, a mainframe computer, a digital signal processor, a device controller, and a computational engine within an appliance.  
         [0028]    Master computer systems  106 - 108  are coupled to Global Positioning System (GPS) receivers  126 - 128 , respectively. GPS receivers  126 - 128  communicate with one or more GPS satellites  101 - 102  to obtain time base information. Note that signals from two different GPS satellites are required to determine a geographical location. However, once a geographical location of a receiver is known, only signals from one GPS satellite are needed to determine time base information.  
         [0029]    Master computer systems  104 - 106  use time base information obtained through GPS receivers  126 - 128  to periodically synchronize local clocks  116 - 118  within master computer systems  106 - 108 , respectively. Master computer system  106  can then communicate with slave computer systems  131 - 133  to synchronize local clocks on slave computer systems  131 - 133  (not shown). Master computer system  108  can similarly communicate with slave computer systems  134 - 136  to synchronize local clocks on slave computer systems  134 - 136  (not shown). This synchronization process is described in more detail below with reference to FIG. 2.  
         [0030]    Process of Synchronizing Local Clock Signals  
         [0031]    [0031]FIG. 2 is a flow chart illustrating the process of using GPS signals to synchronize multiple computing systems on a stationary network in accordance with an embodiment of the present invention.  
         [0032]    The system starts by receiving GPS signals at master computer systems  104 - 106  (step  202 ). In order to obtain more accuracy, this may involve additionally receiving differential GPS (DGPS) signals, Wide Area Augmentation System (WAAS) signals, or Local Area Augmentation System (LAAS) signals. DGPS signals and LAAS signals are additional signals that are received from a ground station to provide additional accuracy, while the WAAS signals are additional signals that are received from geosynchronous satellites to provide additional accuracy.  
         [0033]    Next, the system extracts a GPS time value from the GPS signals at master computer systems  104 - 106  (step  204 ). Note that extracting the time value from the GPS signals can involve using Precise Positioning Service (PPS) signals within the GPS signals to obtain a time value that is accurate to within 200 nanoseconds. Alternatively, it can involve using Standard Positioning Service (SPS) signals within the GPS signals to obtain a time value that is accurate to within 340 nanoseconds.  
         [0034]    Note that PPS signals have historically only been available to authorized users with cryptographic equipment and keys and specially equipped receivers, such as U.S. and Allied military, certain U.S. Government agencies, and selected civil users specifically approved by the U.S. Government. Other users had to use the Standard Positioning Service, which is somewhat less accurate in specifying geographical locations and times.  
         [0035]    Next, the system optionally converts the GPS time values into corresponding Universal Coordinated Time (UTC) time values by using UTC correction parameters contained in the GPS signals (step  206 ). Note that GPS time does not take into account leap seconds and is consequently drifting ahead of UTC time.  
         [0036]    The system then uses the UTC time values to synchronize (reset) the local clocks  116 - 118  at master computer systems  106 - 108  (step  208 ).  
         [0037]    Master computer systems  106 - 108  can then send synchronization signals to slave computer systems (step  210 ). In particular, master computer system  106  can send synchronization signals to slave computer systems  131 - 133 . These synchronization signals enable slave computer systems  131 - 133  to synchronize their local clocks with local clock  116  in master computer system  106 .  
         [0038]    Similarly, master computer system  108  can send synchronization signals to slave computer systems  134 - 136 . These synchronization signals enable slave computer systems  134 - 136  to synchronize their local clocks with local clock  118  in master computer system  108 .  
         [0039]    Next, the system uses local clocks  116 - 118  within master computer systems  106 - 108 , respectively, to synchronize objects within master computer systems  106 - 108  as is described below with reference to FIGS. 3 and 4 (step  212 ).  
         [0040]    Request for a Current Time Value  
         [0041]    [0041]FIG. 3 is a flow chart illustrating the process of servicing a request for a current time value in accordance with an embodiment of the present invention. During operation, the system receives a request to get a current time value (step  302 ). Note that this request can be received in a format that adheres to a specific protocol. In response to this request, the system extracts the current time value from GPS signals as is described above with reference to FIG. 2 (step  304 ). Alternatively, the system can extract the current time value from a local timer that has been recently updated with reference to a Global Positioning System (GPS) signal. Next, the system returns the extracted time value (step  306 ).  
         [0042]    Request to Set a Time Base Associated with and Object  
         [0043]    [0043]FIG. 4 is a flow chart illustrating the process of servicing a request to set a time base associated with an object in accordance with an embodiment of the present invention. During operation, the system receives a request to set a time base associated with the object to the current time value (step  402 ). Note that the object can include a “time base field” which contains an advancing time value. This time base field can keep track of time relative to a local time base, for example, by specifying an offset relative to the local time base. Alternatively, the time base within the object can contain a fixed time value, in which case the time base is a “time stamp.” 
         [0044]    In response to the request, the system sets the time base associated with the object to the current time value (step  404 ). The system subsequently uses the time base to coordinate activities with other entities in the distributed computing system (step  406 ). For example, the system can coordinate actions of geographically distributed components that form the backbone of a communication system to dynamically route data across a communication network.  
         [0045]    The foregoing descriptions of embodiments of the present invention have been presented only for purposes of illustration and description. They are not intended to be exhaustive or to limit the present invention to the forms disclosed. Accordingly, many modifications and variations will be apparent to practitioners skilled in the art. Additionally, the above disclosure is not intended to limit the present invention. The scope of the present invention is defined by the appended claims.